26.4.2 主界面类的代码
【实例26.2】本节主要分析主界面的代码如何实现,其代码如下。
01 import javax.swing.*;
02 import java.awt.*;
03 import java.awt.event.*;
04 ///这是一个主界面的类
05 ///student是指进入学生信息系统的界面控件
06 ///teacher是指进入教师信息系统的界面控件
07 ///leader是指进入领导信息系统的界面控件
08 ///后面紧接着就是这三个控件的动作事件的监视方法,分别是进入三个不同的系统
09 class mainframe
10 {
11 static final int WIDTH=400;
12 static final int HEIGHT=200;
13 JFrame buttonframe;
14 public mainframe()
15 {
16 buttonframe=new JFrame();
17 buttonframe.setTitle("学校信息管理系统");
18 buttonframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
19 buttonframe.setSize(WIDTH, HEIGHT);
20 Toolkit kit=Toolkit.getDefaultToolkit();
21 Dimension screenSize=kit.getScreenSize();
22 int width=screenSize.width;
23 int height=screenSize.height;
24 int x=(width-WIDTH)/2;
25 int y=(height-HEIGHT)/2;
26 buttonframe.setLocation(x, y);
27 buttonframe.setVisible(true);
28 //buttonframe.setResizable(false);
29 JButton student=new JButton("学生信息系统模块");
30 JButton teacher=new JButton("教师信息系统模块");
31 JButton leader=new JButton("学校领导信息系统模块");
32 buttonframe.add(student);
33 buttonframe.add(teacher);
34 buttonframe.add(leader);
35 buttonframe.setLayout(new GridLayout(3,1));buttonframe.pack();
36 student.addActionListener(new ActionListener()
37 {
38 public void actionPerformed(ActionEvent Event)
39 {
40 studentmanageframe studentframe=new studentmanageframe();
41 }
42 });
43 teacher.addActionListener(new ActionListener()
44 {
45 public void actionPerformed(ActionEvent Event)
46 {
47 teachermanageframe teacherframe=new teachermanageframe();
48 }
49 });
50 leader.addActionListener(new ActionListener()
51 {
52 public void actionPerformed(ActionEvent Event)
53 {
54 leadermanageframe leaderframe=new leadermanageframe();
55 }
56 });
57 }
58 }
【代码说明】第16~28行创建窗口,并设置窗口的大小和位置。第29~35行在此窗口中添加按钮。第36~56行可以监听每个按钮的操作,并导航到新的窗口。第28行代码设置了窗口不允许改变大小。
【实例26.3】当选择学生信息系统时,又会有另一个界面出现,其代码如下所示。
01 import java.awt.*;
02 import java.awt.event.ActionEvent;
03 import java.awt.event.ActionListener;
04 import java.sql.Connection;
05 import java.util.Vector;
06 import javax.swing.*;
07 ///这是一个学生信息系统的入口框架类
08 ///studentframe是顶层窗口框架
09 ///通过七个按钮控件来分别可以进入到不同班级、不同系的学生信息系统中
10 ///七个按钮控件分别产生七个不同的动作事件,分别进入不同的信息系统
11 ///在布局方面有两个布局管理器,一个是lay即网格组布局,一个是jp即GridLayout布局
12 ///通过不同的SQL语句进入不同的班级和系的管理系统
13 class studentmanageframe extends JPanel
14 {
15 private static final long serialVersionUID=1L;
16 static final int WIDTH=400;
17 static final int HEIGHT=200;
18 JFrame studentframe;
19 public studentmanageframe()
20 {
21 studentframe=new JFrame();
22 studentframe.setTitle("学生信息管理系统");
23 studentframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
24 studentframe.setSize(WIDTH, HEIGHT);
25 Toolkit kit=Toolkit.getDefaultToolkit();
26 Dimension screenSize=kit.getScreenSize();
27 int width=screenSize.width;
28 int height=screenSize.height;
29 int x=(width-WIDTH)/2;
30 int y=(height-HEIGHT)/2;
31 studentframe.setLocation(x, y);
32 studentframe.setVisible(true);
33 //studentframe.setResizable(false);
34 studentframe.add(this, BorderLayout.CENTER);
35 JButton computerone=new JButton("计算机系一班学生信息系统");
36 JButton computertwo=new JButton("计算机系二班学生信息系统");
37 JButton computerthree=new JButton("计算机系三班学生信息系统");
38 JButton bioone=new JButton("生物系一班学生信息系统");
39 JButton mechone=new JButton("机械系一班学生信息系统");
40 JButton mechtwo=new JButton("机械系二班学生信息系统");
41 JButton mechthree=new JButton("机械系三班学生信息系统");
42 JLabel title=new JLabel("学生信息系统主界面");
43 JLabel banket1=new JLabel();
44 JLabel banket2=new JLabel();
45 GridBagLayout lay=new GridBagLayout();
46 setLayout(lay);
47 GridBagConstraints constraints=new GridBagConstraints();
48 constraints.fill=GridBagConstraints.NONE;
49 constraints.anchor=GridBagConstraints.EAST;
50 constraints.weightx=2;
51 constraints.weighty=5;
52 JPanel jp=new JPanel();
53 jp.setLayout(new GridLayout(1,3));
54 jp.add(banket1);
55 jp.add(title);
56 jp.add(banket2);
57 studentframe.add(jp, BorderLayout.NORTH);
58 add(computerone, constraints,0,1,1,1);//使用网格组布局添加控件
59 add(computertwo, constraints,0,2,1,1);
60 add(computerthree, constraints,0,3,1,1);
61 add(bioone, constraints,0,4,1,1);
62 add(mechone, constraints,1,1,1,1);
63 add(mechtwo, constraints,1,2,1,1);
64 add(mechthree, constraints,1,3,1,1);
65 ///单击这个按钮,进入到计算机系一班学生信息系统
66 computerone.addActionListener(new ActionListener()
67 {
68 public void actionPerformed(ActionEvent Event)
69 {
70 String sql="select*from studentinfo where class2='一班'and major='计算机系'";
71 72
studentinfo info=new studentinfo("计算机系一班学生信息系统",sql);
73 74
}
75 });
76 ///单击这个按钮,进入到计算机系二班学生信息系统
77 computertwo.addActionListener(new ActionListener()
78 {
79 public void actionPerformed(ActionEvent Event)
80 {
81 String sql="select*from studentinfo where class2='二班'and major='计算机系'";
82 83
studentinfo studentinformation=new studentinfo("计算机系二班学生信息系统",sql);
84 85
}
86 });
87 ///单击这个按钮,进入到计算机系三班学生信息系统
88 computerthree.addActionListener(new ActionListener()
89 {
90 public void actionPerformed(ActionEvent Event)
91 {
92 String sql="select*from studentinfo where class2='三班'and major='计算机系'";
93 94
studentinfo studentinformation=new studentinfo("计算机系三班学生信息系统",sql);
95 96
}
97 });
98 ///单击这个按钮,进入到生物系一班学生信息系统
99 bioone.addActionListener(new ActionListener()
100 {
101 public void actionPerformed(ActionEvent Event)
102 {
103 String sql="select*from studentinfo where class2='一班'and major='生物系'";
104 105
studentinfo studentinformation=new studentinfo("生物系一班学生信息系统",sql);
106 107
}
108 });
109 ///单击这个按钮,进入到机械系一班学生信息系统
110 mechone.addActionListener(new ActionListener()
111 {
112 public void actionPerformed(ActionEvent Event)
113 {
114 String sql="select*from studentinfo where class2='一班'and major='机械系'";
115 116
studentinfo studentinformation=new studentinfo("机械系一班学生信息系统",sql);
117 118
}
119 });
120 ///单击这个按钮,进入到机械系二班学生信息系统
121 mechtwo.addActionListener(new ActionListener()
122 {
123 public void actionPerformed(ActionEvent Event)
124 {
125 String sql="select*from studentinfo where class2='二班'and major='机械系'";
126 127
studentinfo studentinformation=new studentinfo("机械系二班学生信息系统",sql);
128 129
}
130 });
131 ///单击这个按钮,进入到机械系三班学生信息系统
132 mechthree.addActionListener(new ActionListener()
133 {
134 public void actionPerformed(ActionEvent Event)
135 {
136 String sql="select*from studentinfo where class2='三班'and major='机械系'";
137 138
studentinfo studentinformation=new studentinfo("机械系三班学生信息系统",sql);
139 140
}
141 });
142 }
143 public void add(Component c, GridBagConstraints constraints, int x, int y, int w, int h)
144 {
145 constraints.gridx=x;
146 constraints.gridy=y;
147 constraints.gridwidth=w;
148 constraints.gridheight=h;
149 add(c, constraints);
150 }
151 }
【代码说明】第21~34行创建窗口,并设置窗口的大小和位置。第35~64行在窗口中设计布局,并添加按钮和标签等。第66~142行监听这些按钮的事件,并给出具体的操作。
【实例26.4】当选择教师信息系统时,又会有另一个界面出现,其代码如下所示。
01 import java.awt.BorderLayout;
02 import java.awt.Component;
03 import java.awt.Dimension;
04 import java.awt.GridBagConstraints;
05 import java.awt.GridBagLayout;
06 import java.awt.GridLayout;
07 import java.awt.Toolkit;
08 import java.awt.event.ActionEvent;
09 import java.awt.event.ActionListener;
10 import javax.swing.JButton;
11 import javax.swing.JFrame;
12 import javax.swing.JLabel;
13 import javax.swing.JPanel;
14 ///这是一个教师信息系统的入口框架类
15 ///teacherframe是顶层窗口框架
16 ///通过三个按钮控件来分别可以进入不同系的教师信息系统中
17 ///三个按钮控件分别产生三个不同的动作事件,分别进入不同的信息系统
18 ///在布局方面有两个布局管理器,一个是lay即网格组布局,一个是jp即GridLayout布局
19 ///通过不同的SQL语句进入不同的班级和系的管理系统
20 class teachermanageframe extends JPanel
21 {
22 private static final long serialVersionUID=1L;
23 static final int WIDTH=400;
24 static final int HEIGHT=200;
25 JFrame teacherframe;
26 public teachermanageframe()
27 {
28 teacherframe=new JFrame();
29 teacherframe.setTitle("教师信息管理系统");
30 teacherframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
31 teacherframe.setSize(WIDTH, HEIGHT);
32 Toolkit kit=Toolkit.getDefaultToolkit();
33 Dimension screenSize=kit.getScreenSize();
34 int width=screenSize.width;
35 int height=screenSize.height;
36 int x=(width-WIDTH)/2;
37 int y=(height-HEIGHT)/2;
38 teacherframe.setLocation(x, y);
39 teacherframe.setVisible(true);
40 //teacherframe.setResizable(false);
41 teacherframe.add(this, BorderLayout.CENTER);
42 JButton computerteacher=new JButton("计算机系教师信息系统");
43 JButton bioteacher=new JButton("生物系教师信息系统");
44 JButton mechteacher=new JButton("机械系教师信息系统");
45 JButton beretun=new JButton("返回");
46 JLabel title=new JLabel("教师信息系统主界面");
47 JLabel banket1=new JLabel();
48 JLabel banket2=new JLabel();
49 GridBagLayout lay=new GridBagLayout();
50 setLayout(lay);
51 GridBagConstraints constraints=new GridBagConstraints();
52 constraints.fill=GridBagConstraints.NONE;
53 constraints.anchor=GridBagConstraints.EAST;
54 constraints.weightx=1;
55 constraints.weighty=4;
56 JPanel jp=new JPanel();
57 jp.setLayout(new GridLayout(1,3));
58 jp.add(banket1);
59 jp.add(title);
60 jp.add(banket2);
61 teacherframe.add(jp, BorderLayout.NORTH);
62 add(computerteacher, constraints,0,1,1,1);//使用网格组布局添加控件
63 add(bioteacher, constraints,0,4,1,1);
64 add(mechteacher, constraints,1,1,1,1);
65 66///单击这个按钮,进入到计算机系教师信息系统
67 computerteacher.addActionListener(new ActionListener()
68 {
69 public void actionPerformed(ActionEvent Event)
70 {
71 String sql="select*from teacherinfo where duty='教师'and major='计算机系'";
72 73
teacherinfo teacherinformation=new teacherinfo("计算机系教师信息系统",sql);
74 75
}
76 });
77 78///单击这个按钮,进入到生物系教师信息系统
79 bioteacher.addActionListener(new ActionListener()
80 {
81 public void actionPerformed(ActionEvent Event)
82 {
83 String sql="select*from teacherinfo where duty='教师'and major='生物系'";
84 teacherinfo teacherinformation=new teacherinfo("生物系教师信息系统",sql);
85 }
86 });
87 ///单击这个按钮,进入到机械系教师信息系统
88 mechteacher.addActionListener(new ActionListener()
89 {
90 public void actionPerformed(ActionEvent Event)
91 {
92 String sql="select*from teacherinfo where duty='教师'and major='机械系'";
93 teacherinfo teacherinformation=new teacherinfo("机械系教师信息系统",sql);
94 }
95 });
96 }
97 public void add(Component c, GridBagConstraints constraints, int x, int y, int w, int h)
98 {
99 constraints.gridx=x;
100 constraints.gridy=y;
101 constraints.gridwidth=w;
102 constraints.gridheight=h;
103 add(c, constraints);
104 }
105 }
【代码说明】第28~41行创建教师管理窗口,并设置窗口的大小和位置。第42~64行在窗口中设计布局,并添加按钮和标签等。第67~96行监听这些按钮的事件,并给出具体的操作。
【实例26.5】当选择领导信息系统时,又会有另一个界面出现,其代码如下所示。
01 import java.awt.BorderLayout;
02 import java.awt.Component;
03 import java.awt.Dimension;
04 import java.awt.event.*;
05 import java.awt.*;
06 import javax.swing.*;
07 ///这是一个领导信息系统的入口框架类
08 ///leaderframe是顶层窗口框架
09 ///通过四个按钮控件来分别可以进入到不同职务、不同系的领导信息系统中
10 ///四个按钮控件分别产生四个不同的动作事件,分别进入不同的信息系统
11 ///在布局方面有两个布局管理器,一个是lay即网格组布局,一个是jp即GridLayout布局
12 ///通过不同的SQL语句进入不同的班级和系的管理系统
13 class leadermanageframe extends JPanel
14 {
15 private static final long serialVersionUID=1L;
16 static final int WIDTH=400;
17 static final int HEIGHT=200;
18 JFrame leaderframe;
19 public leadermanageframe(){
20 leaderframe=new JFrame();
21 leaderframe.setTitle("领导信息管理系统");
22 leaderframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
23 leaderframe.setSize(WIDTH, HEIGHT);
24 Toolkit kit=Toolkit.getDefaultToolkit();
25 Dimension screenSize=kit.getScreenSize();
26 int width=screenSize.width;
27 int height=screenSize.height;
28 int x=(width-WIDTH)/2;
29 int y=(height-HEIGHT)/2;
30 leaderframe.setLocation(x, y);
31 leaderframe.setVisible(true);
32 //leaderframe.setResizable(false);
33 leaderframe.add(this, BorderLayout.CENTER);
34 JButton computerleader=new JButton("计算机系领导信息系统");
35 JButton bioleader=new JButton("生物系领导信息系统");
36 JButton mechleader=new JButton("机械系领导信息系统");
37 JButton schoolleader=new JButton("学校领导信息系统");
38 JLabel title=new JLabel("领导信息系统主界面");
39 JLabel banket1=new JLabel();
40 JLabel banket2=new JLabel();
41 GridBagLayout lay=new GridBagLayout();
42 setLayout(lay);
43 GridBagConstraints constraints=new GridBagConstraints();
44 constraints.fill=GridBagConstraints.NONE;
45 constraints.anchor=GridBagConstraints.EAST;
46 constraints.weightx=2;
47 constraints.weighty=2;
48 JPanel jp=new JPanel();
49 jp.setLayout(new GridLayout(1,3));
50 jp.add(banket1);
51 jp.add(title);
52 jp.add(banket2);
53 leaderframe.add(jp, BorderLayout.NORTH);
54 add(computerleader, constraints,0,0,1,1);//使用网格组布局添加控件
55 add(bioleader, constraints,0,1,1,1);
56 add(mechleader, constraints,1,0,1,1);
57 add(schoolleader, constraints,1,1,1,1);
58 ///单击这个按钮,进入到计算机系领导信息系统
59 computerleader.addActionListener(new ActionListener()
60 {
61 public void actionPerformed(ActionEvent Event)
62 {
63 String sql="select*from teacherinfo where duty<>'领导'and major='计算机系'";
64 leaderinfo leaderinformation=new leaderinfo("计算机系领导信息系统",sql);
65 66
}
67 });
68 ///单击这个按钮,进入到生物系领导信息系统
69 bioleader.addActionListener(new ActionListener()
70 {
71 public void actionPerformed(ActionEvent Event)
72 {
73 String sql="select*from teacherinfo where duty<>'领导'and major='生物系'";
74 leaderinfo leaderinformation=new leaderinfo("生物系领导信息系统",sql);
75 }
76 });
77 ///单击这个按钮,进入到机械系领导信息系统
78 mechleader.addActionListener(new ActionListener()
79 {
80 public void actionPerformed(ActionEvent Event)
81 {
82 String sql="select*from teacherinfo where duty<>'领导'and major='机械系'";
83 leaderinfo leaderinformation=new leaderinfo("机械系领导信息系统",sql);
84 }
85 });
86 ///单击这个按钮,进入到学校领导信息系统
87 schoolleader.addActionListener(new ActionListener()
88 {
89 public void actionPerformed(ActionEvent Event)
90 {
91 String sql="select*from teacherinfo where duty<>'领导'and major='学校'";
92 leaderinfo leaderinformation=new leaderinfo("学校领导信息系统",sql);
93 }
94 });
95 }//leadermanageframe()构造器结束
96 97
public void add(Component c, GridBagConstraints constraints, int x, int y, int w, int h)
98 {
99 constraints.gridx=x;
100 constraints.gridy=y;
101 constraints.gridwidth=w;
102 constraints.gridheight=h;
103 add(c, constraints);
104 }
105 }
【代码说明】第20~33行创建领导管理窗口,并设置窗口的大小和位置。第34~57行在窗口中设计布局,并添加按钮和标签等。第59~94行监听这些按钮的事件,并给出具体的操作。