26.6.3 学生信息界面的设计

学生信息界面主要包括显示信息的控件、添加对象的控件、删除对象的控件。在这个学生信息界面中,将学生信息界面抽象成一个类,然后让所有不同班级和不同系的学生信息系统都能调用它。

【实例26.9】下面设计学生信息的界面,代码如下所示。


01 import javax.swing.*;

02 import java.awt.*;

03 import java.awt.event.*;

04 import java.util.Vector;

05 import java.sql.*;

06 ///这是学生类信息系统的框架类

07 ///studentinfoframe是顶层窗口框架

08 ///通过八个文本域控件来分别显示不同班级、不同系的学生信息

09 ///三个按钮控件分别产生三个不同的动作事件,分别是添加、删除和更新。addition是

10 ///添加,delete是删除,update是更新

11 ///在布局方面有两个布局管理器,一个是lay即网格组布局,一个是jp即GridLayout布局

12 ///通过不同的SQL语句进入不同的班级和系的管理系统

13 ///先将数据库中的数据导入到vec中。然后再将vec中的数据导入学生类中。最后再将数据

14 ///输出

15 class studentinfo extends JPanel

16 {

17 private static final long serialVersionUID=1L;

18 static final int WIDTH=700;

19 static final int HEIGHT=400;

20 final JComboBox nameinput;

21 final JTextField codeinput;

22 final JTextField sexyinput;

23 final JTextField birthdayinput;

24 final JTextField ageinput;

25 final JTextField addressinput;

26 final JTextField gradeinput;

27 final JTextField majorinput;

28 JFrame studentinfoframe;

29 storesystem store=new storesystem();

30 Connection con=store.getConnection();

31 addframe af=new addframe();

32 public void add(Component c, GridBagConstraints constraints, int x, int y, int w, int h)

33 {

34 constraints.gridx=x;

35 constraints.gridy=y;

36 constraints.gridwidth=w;

37 constraints.gridheight=h;

38 add(c, constraints);

39 }

40 public studentinfo(String str, String sql)

41 {

42 studentinfoframe=new JFrame();

43 studentinfoframe.setTitle(str);

44 studentinfoframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

45 studentinfoframe.setSize(WIDTH, HEIGHT);

46 Toolkit kit=Toolkit.getDefaultToolkit();

47 Dimension screenSize=kit.getScreenSize();

48 int width=screenSize.width;

49 int height=screenSize.height;

50 int x=(width-WIDTH)/2;

51 int y=(height-HEIGHT)/2;

52 studentinfoframe.setLocation(x, y);

53 studentinfoframe.setVisible(true);

54 //studentinfoframe.setResizable(false);

55 studentinfoframe.add(this, BorderLayout.CENTER);

56 GridBagLayout lay=new GridBagLayout();

57 setLayout(lay);

58 JLabel name=new JLabel("姓名");

59 JLabel code=new JLabel(" 学号");

60 JLabel sexy=new JLabel(" 性别");

61 JLabel age=new JLabel(" 年龄");

62 JLabel birthday=new JLabel("出 生年月");

63 JLabel address=new JLabel(" 家庭地址");

64 JLabel grade=new JLabel("班级");

65 JLabel major=new JLabel("专业");

66 JLabel title=new JLabel(str);

67 nameinput=new JComboBox();

68 codeinput=new JTextField(10);

69 sexyinput=new JTextField(10);

70 ageinput=new JTextField(10);

71 birthdayinput=new JTextField(10);

72 addressinput=new JTextField(10);

73 gradeinput=new JTextField(10);

74 majorinput=new JTextField(10);

75 ///将存储在Vector中的数据提取出来重新赋值给学生对象。再利用学生对象中getname方法来

76 ///提取出学生 姓名来,最后使用组合列表框的添加功能将这些名字添加到列表中

77 Vector vec=store.getstudent(con, sql);

78 for(int i=0;i<vec.size();i++)

79 {

80 student one=(student)vec.get(i);

81 String nameselect=one.getname();

82 nameinput.addItem(nameselect);

83 }

84 String namestring=(String)nameinput.getSelectedItem();

85 student p=store.getobject(con, namestring);

86 String inputcode=p.getcode();

87 String inputsexy=p.getsexy();

88 String inputage=p.getage();

89 String inputbirthday=p.getbirthday();

90 String inputaddress=p.getaddress();

91 String inputgrade=p.getgrade();

92 String inputmajor=p.getmajor();

93 codeinput.setText(inputcode);

94 sexyinput.setText(inputsexy);

95 ageinput.setText(inputage);

96 birthdayinput.setText(inputbirthday);

97 addressinput.setText(inputaddress);

98 gradeinput.setText(inputgrade);

99 majorinput.setText(inputmajor);

100 JButton addition=new JButton("添加");

101 JButton delete=new JButton("删除");

102 JButton update=new JButton("更新");

103 JButton bereturn=new JButton("返回");

104 GridBagConstraints constraints=new GridBagConstraints();

105 constraints.fill=GridBagConstraints.NONE;

106 constraints.weightx=4;

107 constraints.weighty=6;

108 add(title, constraints,0,0,4,1);//使用网格组布局添加控件

109 add(name, constraints,0,1,1,1);

110 add(code, constraints,0,2,1,1);

111 add(sexy, constraints,0,3,1,1);

112 add(age, constraints,0,4,1,1);

113 add(nameinput, constraints,1,1,1,1);

114 add(codeinput, constraints,1,2,1,1);

115 add(sexyinput, constraints,1,3,1,1);

116 add(ageinput, constraints,1,4,1,1);

117 add(birthday, constraints,2,1,1,1);

118 add(address, constraints,2,2,1,1);

119 add(grade, constraints,2,3,1,1);

120 add(major, constraints,2,4,1,1);

121 add(birthdayinput, constraints,3,1,1,1);

122 add(addressinput, constraints,3,2,1,1);

123 add(gradeinput, constraints,3,3,1,1);

124 add(majorinput, constraints,3,4,1,1);

125 add(addition, constraints,0,5,1,1);

126 add(delete, constraints,1,5,1,1);

127 add(update, constraints,2,5,1,1);

128 add(bereturn, constraints,3,5,1,1);

129 ///通过单击每一个列表框中的名字,会相应地显示出此名字的所有信息

130 nameinput.addItemListener(new ItemListener()

131 {

132 public void itemStateChanged(ItemEvent e)

133 {

134 String namestring=(String)nameinput.getSelectedItem();

135 student p=store.getobject(con, namestring);

136 String inputcode=p.getcode();

137 String inputsexy=p.getsexy();

138 String inputage=p.getage();

139 String inputbirthday=p.getbirthday();

140 String inputaddress=p.getaddress();

141 String inputgrade=p.getgrade();

142 String inputmajor=p.getmajor();

143 codeinput.setText(inputcode);

144 sexyinput.setText(inputsexy);

145 ageinput.setText(inputage);

146 birthdayinput.setText(inputbirthday);

147 addressinput.setText(inputaddress);

148 gradeinput.setText(inputgrade);

149 majorinput.setText(inputmajor);

150 }

151 });

152 ///返回主菜单

153 bereturn.addActionListener(new ActionListener()

154 {

155 public void actionPerformed(ActionEvent Event)

156 {

157 studentmanageframe manageframe=new studentmanageframe();

158 manageframe.setVisible(true);

159 studentinfoframe.dispose();

1 }

161 });

162 ///进入添加主界面

163 addition.addActionListener(new ActionListener()

164 {

165 public void actionPerformed(ActionEvent Event)

166 {

167 addframe addfr=new addframe();

168 addfr.setVisible(true);

169 }

170 });

171 ///更新按钮,使得从数据库表中,将数据提取显示到界面中

172 update.addActionListener(new ActionListener()

173 {

174 public void actionPerformed(ActionEvent Event)

175 {

176 String name1=af.ss.getname();

177 String code1=af.ss.getcode();

178 String age1=af.ss.getage();

179 String sexy1=af.ss.getsexy();

180 String birthday1=af.ss.getbirthday();

181 String address1=af.ss.getaddress();

182 String grade1=af.ss.getgrade();

183 String major1=af.ss.getmajor();

184 nameinput.addItem(name1);

185 nameinput.setSelectedItem(name1);

186 codeinput.setText(code1);

187 ageinput.setText(age1);

188 sexyinput.setText(sexy1);

189 addressinput.setText(address1);

190 birthdayinput.setText(birthday1);

191 gradeinput.setText(grade1);

192 majorinput.setText(major1);

193 }

194 });

195 ///删除数据,且更新到数据库中

196 delete.addActionListener(new ActionListener()

197 {

198 public void actionPerformed(ActionEvent Event)

199 {

200 String namestring=(String)nameinput.getSelectedItem();

201 storesystem store=new storesystem();

202 try

203 {

204 Connection con=store.getConnection();

205 Statement st=con.createStatement();

206 String sql="delete*from studentinfo where='"+namestring+"'";

207 st.executeUpdate(sql);

208 }

6 0

209 catch(Exception e){}

210 nameinput.removeItem(namestring);

211 }

212 213

});

214 }

215 }


【代码说明】第42~55行创建窗口并设置窗口的各个属性。第56~128行设置标签和按钮控件等。第130~151行侦听下拉列表框的选择并作出反馈。第172~194行从数据库表提取数据并显示到界面中。第196~213行删除数据。

这样整个学生信息系统的界面就设计完毕。

【运行效果】下面运行程序,如图26.18所示。

26.6.3 学生信息界面的设计 - 图1

图 26.18 学生信息系统界面

单击“添加”按钮,弹出一个对话框,这是一个框架界面。下面演示这个框架界面如何实现。

【实例26.10】设计显示信息的控件组,代码如下所示。


01 ///主运行类

02 ///main指主框架

03 ///setDefaultCloseOperation指让框架右上角的按钮都有效

04 ///show让框架能显示出来

05 import java.awt.*;

06 import java.awt.event.*;

07 import java.sql.*;

08 import java.util.Vector;

09 import javax.swing.*;

10 ///这个是学生信息系统添加信息框架类

11 ///通过八个文本域将不同信息的学生分别输出在其中

12 ///通过一个添加按钮,将数据添加到数据库中

13 ///在这里的布局是通过网格组布局管理器来设定的

14 ///在回送到信息界面时将学生对象ss设定为静态。放置新建对象时,其值会改变

15 16 class addframe extends JPanel

17 {

18 String codetext;

19 String agetext;

20 String sexytext;

21 String birthdaytext;

22 String addresstext;

23 String gradetext;

24 String majortext;

25 public final JTextField nameinput=new JTextField(10);

26 private static final long serialVersionUID=1L;

27 static final int WIDTH=700;

28 static final int HEIGHT=400;

29 static student ss;

30 JFrame studentaddframe;

31 public void add(Component c, GridBagConstraints constraints, int x, int y, int w, int h)

32 {

33 constraints.gridx=x;

34 constraints.gridy=y;

35 constraints.gridwidth=w;

36 constraints.gridheight=h;

37 add(c, constraints);

38 }

39 public addframe()

40 {

41 studentaddframe=new JFrame();

42 studentaddframe.setTitle("学生添加系统");

43 studentaddframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

44 studentaddframe.setSize(WIDTH, HEIGHT);

45 Toolkit kit=Toolkit.getDefaultToolkit();

46 Dimension screenSize=kit.getScreenSize();

47 int width=screenSize.width;

48 int height=screenSize.height;

49 int x=(width-WIDTH)/2;

50 int y=(height-HEIGHT)/2;

51 studentaddframe.setLocation(x, y);

52 studentaddframe.setVisible(true);

53 //studentaddframe.setResizable(false);

54 studentaddframe.add(this, BorderLayout.CENTER);

55 GridBagLayout lay=new GridBagLayout();

56 setLayout(lay);

57 JLabel name=new JLabel("姓名");

58 JLabel code=new JLabel(" 学号");

59 JLabel sexy=new JLabel(" 性别");

60 JLabel age=new JLabel(" 年龄");

61 JLabel birthday=new JLabel("出 生年月");

62 JLabel address=new JLabel(" 家庭地址");

63 JLabel grade=new JLabel("班级");

64 JLabel major=new JLabel("专业");

65 final JTextField codeinput=new JTextField(10);

66 final JTextField sexyinput=new JTextField(10);

67 final JTextField ageinput=new JTextField(10);

68 final JTextField birthdayinput=new JTextField(10);

69 final JTextField addressinput=new JTextField(10);

70 final JTextField gradeinput=new JTextField(10);

71 final JTextField majorinput=new JTextField(10);

72 JLabel title=new JLabel("学生被添加的基本信息");

73 JButton additionbutton=new JButton("添加");

74 GridBagConstraints constraints=new GridBagConstraints();

75 constraints.fill=GridBagConstraints.NONE;

76 constraints.weightx=4;

77 constraints.weighty=6;

78 add(title, constraints,0,0,4,1);//使用网格组布局添加控件

79 add(name, constraints,0,1,1,1);

80 add(code, constraints,0,2,1,1);

81 add(sexy, constraints,0,3,1,1);

82 add(age, constraints,0,4,1,1);

83 add(nameinput, constraints,1,1,1,1);

84 add(codeinput, constraints,1,2,1,1);

85 add(sexyinput, constraints,1,3,1,1);

86 add(ageinput, constraints,1,4,1,1);

87 add(birthday, constraints,2,1,1,1);

88 add(address, constraints,2,2,1,1);

89 add(grade, constraints,2,3,1,1);

90 add(major, constraints,2,4,1,1);

91 add(birthdayinput, constraints,3,1,1,1);

92 add(addressinput, constraints,3,2,1,1);

93 add(gradeinput, constraints,3,3,1,1);

94 add(majorinput, constraints,3,4,1,1);

95 add(additionbutton, constraints,0,5,4,1);

96 ///将每个文本域中的信息赋值给变量,再将变量以值的形式存储到数据库的表中

97 ///最后,再将这些值存储到学生对象中,并且这个学生对象是一个静态的对象

98 additionbutton.addActionListener(new ActionListener()

99 {

100 public void actionPerformed(ActionEvent Event)

101 {

102 try

103 {

104 String nametext=nameinput.getText();

105 codetext=codeinput.getText();

106 agetext=ageinput.getText();

107 sexytext=sexyinput.getText();

108 birthdaytext=birthdayinput.getText();

109 addresstext=addressinput.getText();

110 gradetext=gradeinput.getText();

111 majortext=majorinput.getText();

112 storesystem store=new storesystem();

113 Connection con=store.getConnection();

114 Statement st=con.createStatement();

115 String sql="insert into studentinfo

116 values('"+nametext+"','"+codetext+"','"+sexytext+"','"+agetext+"','"+addresstext+"','"

117+birthdaytext+"','"+gradetext+"','"+majortext+"')";

118 st.executeUpdate(sql);

119 ss=new student(nametext, codetext);

120 ss.setage(agetext);

121 ss.setsexy(sexytext);

122 ss.setaddress(addresstext);

123 ss.setbirthday(birthdaytext);

124 ss.setgrade(gradetext);

125 ss.setmajor(majortext);

126 Vector vec=new Vector();

127 vec.add(ss);

128 }

129 catch(Exception e){}

130 studentaddframe.dispose();

131 }

132 });

133 }

134 }


【代码说明】第18~30行定义一些变量和常量,为下面的操作做准备。第41~95行创建窗口,并添加窗口中的标签、按钮和文本框等。第100~131行实现添加学生到数据库的操作。

【运行效果】运行上述代码,效果如图26.19所示。

26.6.3 学生信息界面的设计 - 图2

图 26.19 添加学生系统的界面

说明 添加完成后,可以去数据库看看是否已经完成了数据的添加。