26.7.3 教师信息界面的设计

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

【案例26.13】设计教师信息的界面,代码如下所示。

01 import java.awt.BorderLayout;

02 import java.awt.*;

03 import javax.swing.*;

04 import java.awt.event.*;

05 import java.util.Vector;

06 import java.sql.*;

07 ///这是教师类信息系统的框架类

08 ///teacherinfoframe是顶层窗口框架

09 ///通过九个文本域控件来分别可以显示不同专业、不同职务的教师信息

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

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

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

13 ///通过不同的SQL语句进入不同的管理系统

14 ///先将数据库中的数据导入到vec中。然后再将vec中的数据导入到教师类中。最后再将数据

15 ///输出

16 class teacherinfo extends JPanel

17 {

18 private static final long serialVersionUID=1L;

19 static final int WIDTH=700;

20 static final int HEIGHT=400;

21 final JTextField codeinput;

22 final JTextField sexyinput;

23 final JTextField birthdayinput;

24 final JTextField ageinput;

25 final JTextField addressinput;

26 final JTextField salaryinput;

27 final JTextField majorinput;

28 final JTextField dutyinput;

29 JFrame teacherinfoframe;

30 storesystem2 store=new storesystem2();

31 Connection con=store.getConnection();

32 addframe2 af=new addframe2();

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

34 {

35 constraints.gridx=x;

36 constraints.gridy=y;

37 constraints.gridwidth=w;

38 constraints.gridheight=h;

39 add(c, constraints);

40 }

41 public teacherinfo(String str, String sql)

42 {

43 teacherinfoframe=new JFrame();

44 teacherinfoframe.setTitle(str);

45 teacherinfoframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

46 teacherinfoframe.setSize(WIDTH, HEIGHT);

47 Toolkit kit=Toolkit.getDefaultToolkit();

48 Dimension screenSize=kit.getScreenSize();

49 int width=screenSize.width;

50 int height=screenSize.height;

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

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

53 teacherinfoframe.setLocation(x, y);

54 teacherinfoframe.setVisible(true);

55 //teacherinfoframe.setResizable(false);

56 teacherinfoframe.add(this, BorderLayout.CENTER);

57 GridBagLayout lay=new GridBagLayout();

58 setLayout(lay);

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

60 JLabel code=new JLabel("工号");

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

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

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

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

65 JLabel salary=new JLabel("薪水");

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

67 JLabel duty=new JLabel("职务");

68 JLabel title=new JLabel(str);

69 nameinput=new JComboBox();

70 codeinput=new JTextField(10);

71 sexyinput=new JTextField(10);

72 ageinput=new JTextField(10);

73 birthdayinput=new JTextField(10);

74 addressinput=new JTextField(10);

75 salaryinput=new JTextField(10);

76 majorinput=new JTextField(10);

77 dutyinput=new JTextField(10);

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

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

80 Vector vec=store.getteacher(con, sql);

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

82 {

83 teacher one=(teacher)vec.get(i);

84 String nameselect=one.getname();

85 nameinput.addItem(nameselect);

86 }

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

88 teacher p=store.getobject(con, namestring);

89 String inputcode=p.getcode();

90 String inputsexy=p.getsexy();

91 String inputage=p.getage();

92 String inputbirthday=p.getbirthday();

93 String inputaddress=p.getaddress();

94 String inputsalary=p.getsalary();

95 String inputmajor=p.getmajor();

96 String inputduty=p.getduty();

97 codeinput.setText(inputcode);

98 sexyinput.setText(inputsexy);

99 ageinput.setText(inputage);

100 birthdayinput.setText(inputbirthday);

101 addressinput.setText(inputaddress);

102 salaryinput.setText(inputsalary);

103 majorinput.setText(inputmajor);

104 dutyinput.setText(inputduty);

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

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

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

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

109 GridBagConstraints constraints=new GridBagConstraints();

110 constraints.fill=GridBagConstraints.NONE;

111 constraints.weightx=4;

112 constraints.weighty=7;

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

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

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

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

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

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

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

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

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

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

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

124 add(salary, constraints,2,3,1,1);

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

126 add(duty, constraints,0,5,1,1);

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

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

129 add(salaryinput, constraints,3,3,1,1);

130 add(dutyinput, constraints,1,5,1,1);

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

132 add(addition, constraints,0,6,1,1);

133 add(delete, constraints,1,6,1,1);

134 add(update, constraints,2,6,1,1);

135 add(bereturn, constraints,3,6,1,1);

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

137 nameinput.addItemListener(new ItemListener()

138 {

139 public void itemStateChanged(ItemEvent e)

140 {

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

142 teacher p=store.getobject(con, namestring);

143 String inputcode=p.getcode();

144 String inputsexy=p.getsexy();

145 String inputage=p.getage();

146 String inputbirthday=p.getbirthday();

147 String inputaddress=p.getaddress();

148 String inputsalary=p.getsalary();

149 String inputmajor=p.getmajor();

150 String inputduty=p.getduty();

151 codeinput.setText(inputcode);

152 sexyinput.setText(inputsexy);

153 ageinput.setText(inputage);

154 birthdayinput.setText(inputbirthday);

155 addressinput.setText(inputaddress);

156 salaryinput.setText(inputsalary);

157 majorinput.setText(inputmajor);

158 dutyinput.setText(inputduty);

159 }

160 });

161 ///返回主菜单

162 bereturn.addActionListener(new ActionListener()

163 {

164 public void actionPerformed(ActionEvent Event)

165 {

166 teachermanageframe manageframe=new teachermanageframe();

167 manageframe.setVisible(true);

168 teacherinfoframe.dispose();

169 }

170 });

171 ///进入添加主界面

172 addition.addActionListener(new ActionListener()

173 {

174 public void actionPerformed(ActionEvent Event)

175 {

176 addframe2 addfr=new addframe2();

177 addfr.setVisible(true);

178 }

179 });

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

181 update.addActionListener(new ActionListener()

182 {

183 public void actionPerformed(ActionEvent Event)

184 {

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

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

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

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

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

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

191 String salary1=af.ss.getsalary();

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

193 String duty1=af.ss.getduty();

194 nameinput.addItem(name1);

195 nameinput.setSelectedItem(name1);

196 codeinput.setText(code1);

197 ageinput.setText(age1);

198 sexyinput.setText(sexy1);

199 addressinput.setText(address1);

200 birthdayinput.setText(birthday1);

201 salaryinput.setText(salary1);

202 majorinput.setText(major1);

203 dutyinput.setText(duty1);

204 }

205 });

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

207 delete.addActionListener(new ActionListener()

208 {

209 public void actionPerformed(ActionEvent Event)

210 {

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

212 storesystem2 store=new storesystem2();

213 try

214 {

215 Connection con=store.getConnection();

216 Statement st=con.createStatement();

217 String sql="delete*from teacherinfo where='"+namestring+"'";

218 st.executeUpdate(sql);

219 }

220 catch(Exception e){}

221 nameinput.removeItem(namestring);

222 }

223 });

224 }

225 }


【代码说明】代码第43~56行创建窗口并设置窗口的各个属性。第57~135行设置标签和按钮控件等。第137~160行侦听下拉列表框的选择并作出反馈。第181~205行从数据库表提取数据并显示到界面中。第207~223行删除数据。

【运行效果】这样整个教师信息系统的界面设计完毕,程序段的运行结果如图26.20所示。

26.7.3 教师信息界面的设计 - 图1

图 26.20 教师添加信息系统

【实例26.14】单击“添加”按钮,会弹出一个对话框,这是一个框架界面。下面实现这个框架界面的设计,代码如下所示。


01 ///主运行类

02 ///main指主框架

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

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

05 import java.awt.BorderLayout;

06 import java.awt.Component;

07 import java.awt.Dimension;

08 import java.awt.GridBagConstraints;

09 import java.awt.GridBagLayout;

10 import java.awt.Toolkit;

11 import java.awt.event.ActionEvent;

12 import java.awt.event.ActionListener;

13 import java.sql.Connection;

14 import java.sql.Statement;

15 import java.util.Vector;

16 import javax.swing.JButton;

17 import javax.swing.JFrame;

18 import javax.swing.JLabel;

19 import javax.swing.JTextField;

20 import javax.swing.JPanel;

21 ///这个是教师信息系统添加信息框架类

22 ///通过九个文本域将不同信息的教师分别输出在其中

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

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

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

26 class addframe2 extends JPanel

27 {

28 String codetext;

29 String agetext;

30 String sexytext;

31 String birthdaytext;

32 String addresstext;

33 String salarytext;

34 String majortext;

35 String dutytext;

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

37 private static final long serialVersionUID=1L;

38 static final int WIDTH=700;

39 static final int HEIGHT=400;

40 static teacher ss;

41 JFrame teacheraddframe;

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

43 {

44 constraints.gridx=x;

45 constraints.gridy=y;

46 constraints.gridwidth=w;

47 constraints.gridheight=h;

48 add(c, constraints);

49 }

50 public addframe2()

51 {

52 teacheraddframe=new JFrame();

53 teacheraddframe.setTitle("教师添加系统");

54 teacheraddframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

55 teacheraddframe.setSize(WIDTH, HEIGHT);

56 Toolkit kit=Toolkit.getDefaultToolkit();

57 Dimension screenSize=kit.getScreenSize();

58 int width=screenSize.width;

59 int height=screenSize.height;

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

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

62 teacheraddframe.setLocation(x, y);

63 teacheraddframe.setVisible(true);

64 //teacheraddframe.setResizable(false);

65 teacheraddframe.add(this, BorderLayout.CENTER);

66 GridBagLayout lay=new GridBagLayout();

67 setLayout(lay);

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

69 JLabel code=new JLabel("工号");

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

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

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

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

74 JLabel salary=new JLabel("薪水");

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

76 JLabel duty=new JLabel("职务");

77 final JTextField codeinput=new JTextField(10);

78 final JTextField sexyinput=new JTextField(10);

79 final JTextField ageinput=new JTextField(10);

80 final JTextField birthdayinput=new JTextField(10);

81 final JTextField addressinput=new JTextField(10);

82 final JTextField salaryinput=new JTextField(10);

83 final JTextField majorinput=new JTextField(10);

84 final JTextField dutyinput=new JTextField(10);

85 JLabel title=new JLabel("教师被添加的基本信息");

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

87 GridBagConstraints constraints=new GridBagConstraints();

88 constraints.fill=GridBagConstraints.NONE;

89 constraints.weightx=4;

90 constraints.weighty=7;

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

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

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

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

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

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

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

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

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

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

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

102 add(salary, constraints,2,3,1,1);

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

104 add(duty, constraints,0,5,1,1);

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

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

107 add(salaryinput, constraints,3,3,1,1);

108 add(dutyinput, constraints,1,5,1,1);

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

110 add(additionbutton, constraints,0,6,4,1);

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

112 ///最后,再将这些值存储到教师对象中,并且这个教师对象是一个静态的对象

113 additionbutton.addActionListener(new ActionListener()

114 {

115 public void actionPerformed(ActionEvent Event)

116 {

117 try

118 {

119 String nametext=nameinput.getText();

120 codetext=codeinput.getText();

121 agetext=ageinput.getText();

122 sexytext=sexyinput.getText();

123 birthdaytext=birthdayinput.getText();

124 addresstext=addressinput.getText();

125 salarytext=salaryinput.getText();

126 dutytext=dutyinput.getText();

127 majortext=majorinput.getText();

128 storesystem2 store=new storesystem2();

129 Connection con=store.getConnection();

130 Statement st=con.createStatement();

131 String sql="insert into teacherinfo

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

133+birthdaytext+"','"+salarytext+"','"+majortext+"','"+dutytext+"')";

134 st.executeUpdate(sql);

135 ss=new teacher(nametext, codetext);

136 ss.setage(agetext);

137 ss.setsexy(sexytext);

138 ss.setaddress(addresstext);

139 ss.setbirthday(birthdaytext);

140 ss.setsalary(salarytext);

141 ss.setmajor(majortext);

142 ss.setduty(dutytext);

143 Vector vec=new Vector();

144 vec.add(ss);

145 }

146 catch(Exception e){}

147 teacheraddframe.dispose();

148 }

149 });

150 }

151 }


【代码说明】第28~41行定义一些变量和常量,为下面的操作做准备。第52~110行创建教师添加窗口,并添加窗口中的标签、按钮和文本框等。第113~149行实现添加教师到数据库的操作。

【运行效果】程序段的运行结果如图26.21所示。

26.7.3 教师信息界面的设计 - 图2

图 26.21 教师添加信息系统界面