数据库编程(1)—— 界面(view层)设计

由于我们最终的目的是做出一个通过界面能够和数据库互动的成果,所以,这篇博文所讲解 内容就相对简单些,只是对于界面的初始化

说到界面编程,本人在本专栏之前的博文——《窗口编程》中讲到过,若是有对这个知识点有疑问的同学,可以去看看。

况且,本专题博文的主讲知识点也不是这个。
那么,本人也就不在这里多浪费笔墨了,现在就直接给出我们本专题所要用到的界面:
首先是一个帮助我们设置 界面 的接口:

package com.mec.util;

import java.awt.Color;
import java.awt.Font;

public interface IMecView {
	Font topicFont = new Font("微软雅黑", Font.BOLD, 30);
	Font normalFont = new Font("宋体", Font.PLAIN, 16);
	Font btnFont = new Font("宋体", Font.PLAIN, 14);
	Font smallFont = new Font("宋体", Font.PLAIN, 12);
	
	Color topicColor = new Color(15, 3, 227);
	
	int PADDING = 5;
	
	default void initView() {
		init();
		reinit();
		dealAction();
	}
	
	void init();
	void reinit();
	void dealAction();
	
	void showView();
	void closeView();
}

那么,现在,本人给出一个运用到这个接口的类,来实现 窗口的基本实现:

package com.mec.mis.view;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

public class StudentMisView implements IMecView {
	private JFrame jfrmMainView;
	
	private JLabel jlblTopic;
	
	private JPanel jpnlButton;
	private JPanel jpnlList;
	private JPanel jpnlBaseInfo;
	
	private JTextField jtxtId;
	private JTextField jtxtStuId;
	private JTextField jtxtName;
	private JLabel jlblSexCaption;
	private JComboBox<?> jcmbNative;
	private JComboBox<?> jcmbNation;
	private JComboBox<?> jcmbSchool;
	private JComboBox<?> jcmbDepartment;
	private JComboBox<?> jcmbMajor;
	
	private ?<?> dlmStudentList;
	private JList<?> jlstStudentList;
	//上面几个'?'表示对于这些成员的类型还是处于 未知状态
	private JScrollPane jscpStudentList;
	private JLabel jlblStudentAccount;
	
	private JButton jbtnExit;
	
	private SDMService sdmService;
	
	private static final int FRM_WIDTH = 600;
	private static final int FRM_HEIGHT = 363;
	private static final int lblWidth = normalFont.getSize() * 4;
	private static final int normalFontHeight = normalFont.getSize();
	
	public StudentMisView() {
		//TODO 处理学生的基本信息
		initView();
	}

	@Override
	public void init() {
		jfrmMainView = new JFrame("学生信息管理系统");
		jfrmMainView.setSize(FRM_WIDTH, FRM_HEIGHT);
		jfrmMainView.setLayout(new BorderLayout());
		jfrmMainView.setLocationRelativeTo(null);
		jfrmMainView.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		
		jlblTopic = new JLabel("学生信息管理系统", JLabel.CENTER);
		jlblTopic.setFont(topicFont);
		jlblTopic.setForeground(topicColor);
		jfrmMainView.add(jlblTopic, BorderLayout.NORTH);
		
		JLabel jlblWestSpace = new JLabel(" ");
		jlblWestSpace.setFont(normalFont);
		
		JLabel jlblEastSpace = new JLabel(" ");
		jlblEastSpace.setFont(normalFont);
		
		JPanel jpnlWest = new JPanel();
		jpnlWest.add(jlblWestSpace);
		jfrmMainView.add(jpnlWest, BorderLayout.WEST);
		
		JPanel jpnlEast = new JPanel();
		jpnlEast.add(jlblEastSpace);
		jfrmMainView.add(jpnlEast, BorderLayout.EAST);
		
		JPanel jpnlView = new JPanel();
		jpnlView.setLayout(new GridLayout(1, 2));
		jfrmMainView.add(jpnlView, BorderLayout.CENTER);
		
		// 学生基本信息区画板
		jpnlBaseInfo = new JPanel();
		jpnlBaseInfo.setLayout(null);
		jpnlView.add(jpnlBaseInfo);
		
		// 学生列表区画板
		jpnlList = new JPanel();
		jpnlList.setLayout(new BorderLayout());
		jpnlView.add(jpnlList);
		
		dlmStudentList = new DefaultListModel<>();
		jlstStudentList = new JList<>(dlmStudentList);
		jlstStudentList.setFont(normalFont);
		jscpStudentList = new JScrollPane(jlstStudentList);
		TitledBorder ttdbStudentList = new TitledBorder("学生信息列表");
		ttdbStudentList.setTitleFont(normalFont);
		ttdbStudentList.setTitlePosition(TitledBorder.ABOVE_TOP);
		ttdbStudentList.setTitleJustification(TitledBorder.CENTER);
		jscpStudentList.setBorder(ttdbStudentList);
		jpnlList.add(jscpStudentList, BorderLayout.CENTER);
		
		jlblStudentAccount = new JLabel("共0名学生", JLabel.LEFT);
		jlblStudentAccount.setFont(btnFont);
		jpnlList.add(jlblStudentAccount, BorderLayout.SOUTH);

		// 命令按钮区画板
		jpnlButton = new JPanel();
		jpnlButton.setLayout(new FlowLayout());
		jfrmMainView.add(jpnlButton, BorderLayout.SOUTH);
		
		int txtWidth = normalFontHeight * 13;
		int txtHeight = normalFontHeight + 4;
		int lblHeight = normalFontHeight + 2;
		int top = 0;
		int left = lblWidth;
		
		JLabel jlblId = new JLabel("身份证号");
		jlblId.setFont(normalFont);
		jlblId.setBounds(0, 0, lblWidth, lblHeight);
		jpnlBaseInfo.add(jlblId);
		
		jtxtId = new JTextField();
		jtxtId.setFont(normalFont);
		jtxtId.setBounds(left, top+2, txtWidth, txtHeight);
		jpnlBaseInfo.add(jtxtId);
		
		top += lblHeight + PADDING;
		JLabel jlblStuId = new JLabel("学    号");
		jlblStuId.setFont(normalFont);
		jlblStuId.setBounds(0, top, lblWidth, lblHeight);
		jpnlBaseInfo.add(jlblStuId);
		
		jtxtStuId = new JTextField();
		jtxtStuId.setFont(normalFont);
		jtxtStuId.setBounds(left, top+2, txtWidth, txtHeight);
		jpnlBaseInfo.add(jtxtStuId);
		
		top += lblHeight + PADDING;
		JLabel jlblName = new JLabel("姓    名");
		jlblName.setFont(normalFont);
		jlblName.setBounds(0, top, lblWidth, lblHeight);
		jpnlBaseInfo.add(jlblName);
		
		jtxtName = new JTextField();
		jtxtName.setFont(normalFont);
		jtxtName.setBounds(left, top+2, txtWidth, txtHeight);
		jpnlBaseInfo.add(jtxtName);
		
		top += lblHeight + PADDING;
		JLabel jlblSex = new JLabel("性    别");
		jlblSex.setFont(normalFont);
		jlblSex.setBounds(0, top, lblWidth, lblHeight);
		jpnlBaseInfo.add(jlblSex);
		
		jlblSexCaption = new JLabel("", JLabel.CENTER);
		jlblSexCaption.setFont(normalFont);
		jlblSexCaption.setBounds(left, top+2, txtWidth, txtHeight);
		jpnlBaseInfo.add(jlblSexCaption);
		
		top += lblHeight + PADDING;
		JLabel jlblNative = new JLabel("籍    贯");
		jlblNative.setFont(normalFont);
		jlblNative.setBounds(0, top, lblWidth, lblHeight);
		jpnlBaseInfo.add(jlblNative);
		
		jcmbNative = new JComboBox<>();
		jcmbNative.setFont(normalFont);
		jcmbNative.setBounds(left, top-1, txtWidth, txtHeight+2);
		jpnlBaseInfo.add(jcmbNative);
		
		top += lblHeight + PADDING;
		JLabel jlblNation = new JLabel("民    族");
		jlblNation.setFont(normalFont);
		jlblNation.setBounds(0, top, lblWidth, lblHeight);
		jpnlBaseInfo.add(jlblNation);
		
		jcmbNation = new JComboBox<>();
		jcmbNation.setFont(normalFont);
		jcmbNation.setBounds(left, top-1, txtWidth, txtHeight+2);
		jpnlBaseInfo.add(jcmbNation);
		
		top += lblHeight + PADDING;
		JLabel jlblSchool = new JLabel("院    校");
		jlblSchool.setFont(normalFont);
		jlblSchool.setBounds(0, top, lblWidth,  lblHeight);
		jpnlBaseInfo.add(jlblSchool);
		
		jcmbSchool = new JComboBox<>();
		jcmbSchool.setFont(normalFont);
		jcmbSchool.setBounds(left, top-1, txtWidth, txtHeight+2);
		jpnlBaseInfo.add(jcmbSchool);
		
		top += lblHeight + PADDING;
		JLabel jlblDepartment = new JLabel("院    系");
		jlblDepartment.setFont(normalFont);
		jlblDepartment.setBounds(0, top, lblWidth,  lblHeight);
		jpnlBaseInfo.add(jlblDepartment);
		
		jcmbDepartment = new JComboBox<>();
		jcmbDepartment.setFont(normalFont);
		jcmbDepartment.setBounds(left, top-1, txtWidth, txtHeight+2);
		jpnlBaseInfo.add(jcmbDepartment);
		
		top += lblHeight + PADDING;
		JLabel jlblMajor = new JLabel("专    业");
		jlblMajor.setFont(normalFont);
		jlblMajor.setBounds(0, top, lblWidth,  lblHeight);
		jpnlBaseInfo.add(jlblMajor);
		
		jcmbMajor = new JComboBox<>();
		jcmbMajor.setFont(normalFont);
		jcmbMajor.setBounds(left, top-1, txtWidth, txtHeight+2);
		jpnlBaseInfo.add(jcmbMajor);

		jbtnExit = new JButton("退出");
		jbtnExit.setFont(btnFont);
		jpnlButton.add(jbtnExit);
	}

	//TODO 处理国家、民族
	
	@Override
	public void reinit() {
		INativeDao nativeDao = getNativeDao();

		jcmbNation.removeAllItems();
		jcmbNative.removeAllItems();
		
		//TODO 处理各种下拉菜单
	}

	@Override
	public void dealAction() {
		jfrmMainView.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				closeView();
			}
		});
	}

	@Override
	public void showView() {
		jfrmMainView.setVisible(true);
	}

	@Override
	public void closeView() {
		jfrmMainView.dispose();
	}
	
}

那么,我们本专题想要制作的界面的基本模板就做出来了,至于接下来的几步操作,将会在本人本专题之后的几篇博文中进行讲解!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值