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行监听这些按钮的事件,并给出具体的操作。