26.8.3 领导信息界面的设计

领导信息界面同样包括了显示信息的控件、添加对象的控件、删除对象的控件。在这个领导信息界面中,将这个领导信息界面抽象成一个类,然后,能让所有的不同系的领导信息系统(包括学校领导信息系统)都能调用它。

【实例26.16】领导信息界面的实现代码如下所示。


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.Toolkit;

07 import java.awt.event.ActionEvent;

08 import java.awt.event.ActionListener;

09 import java.awt.event.ItemEvent;

10 import java.awt.event.ItemListener;

11 import java.sql.Connection;

12 import java.sql.Statement;

13 import java.util.Vector;

14 import javax.swing.JPanel;

15 import javax.swing.JButton;

16 import javax.swing.JComboBox;

17 import javax.swing.JFrame;

18 import javax.swing.JLabel;

19 import javax.swing.JTextField;

20 ///这是领导类信息系统的框架类

21 ///leaderinfoframe是顶层窗口框架

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

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

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

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

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

27 ///先将数据库中的数据导入到vec中。然后再将vec中的数据导入领导类中。最后再将数据

28 ///输出

29 class leaderinfo extends JPanel

30 {

31 private static final long serialVersionUID=1L;

32 static final int WIDTH=700;

33 static final int HEIGHT=400;

34 final JComboBox nameinput;

35 final JTextField codeinput;

36 final JTextField sexyinput;

37 final JTextField birthdayinput;

38 final JTextField ageinput;

39 final JTextField addressinput;

40 final JTextField salaryinput;

41 final JTextField majorinput;

42 final JTextField dutyinput;

43 JFrame teacherinfoframe;

44 storesystem2 store=new storesystem2();

45 Connection con=store.getConnection();

46 addframe2 af=new addframe2();

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

48 {

49 constraints.gridx=x;

50 constraints.gridy=y;

51 constraints.gridwidth=w;

52 constraints.gridheight=h;

53 add(c, constraints);

54 }

55 public leaderinfo(String str, String sql)

56 {

57 teacherinfoframe=new JFrame();

58 teacherinfoframe.setTitle(str);

59 teacherinfoframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

60 teacherinfoframe.setSize(WIDTH, HEIGHT);

61 Toolkit kit=Toolkit.getDefaultToolkit();

62 Dimension screenSize=kit.getScreenSize();

63 int width=screenSize.width;

64 int height=screenSize.height;

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

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

67 teacherinfoframe.setLocation(x, y);

68 teacherinfoframe.setVisible(true);

69 //teacherinfoframe.setResizable(false);

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

71 GridBagLayout lay=new GridBagLayout();

72 setLayout(lay);

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

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

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

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

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

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

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

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

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

82 JLabel title=new JLabel(str);

83 nameinput=new JComboBox();

84 codeinput=new JTextField(10);

85 sexyinput=new JTextField(10);

86 ageinput=new JTextField(10);

87 birthdayinput=new JTextField(10);

88 addressinput=new JTextField(10);

89 salaryinput=new JTextField(10);

90 majorinput=new JTextField(10);

91 dutyinput=new JTextField(10);

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

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

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

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

96 {

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

98 String nameselect=one.getname();

99 nameinput.addItem(nameselect);

100 }

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

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

103 String inputcode=p.getcode();

104 String inputsexy=p.getsexy();

105 String inputage=p.getage();

106 String inputbirthday=p.getbirthday();

107 String inputaddress=p.getaddress();

108 String inputsalary=p.getsalary();

109 String inputmajor=p.getmajor();

110 String inputduty=p.getduty();

111 codeinput.setText(inputcode);

112 sexyinput.setText(inputsexy);

113 ageinput.setText(inputage);

114 birthdayinput.setText(inputbirthday);

115 addressinput.setText(inputaddress);

116 salaryinput.setText(inputsalary);

117 majorinput.setText(inputmajor);

118 dutyinput.setText(inputduty);

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

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

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

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

123 GridBagConstraints constraints=new GridBagConstraints();

124 constraints.fill=GridBagConstraints.NONE;

125 constraints.weightx=4;

126 constraints.weighty=7;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

151 nameinput.addItemListener(new ItemListener()

152 {

153 public void itemStateChanged(ItemEvent e)

154 {

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

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

157 String inputcode=p.getcode();

158 String inputsexy=p.getsexy();

159 String inputage=p.getage();

160 String inputbirthday=p.getbirthday();

161 String inputaddress=p.getaddress();

162 String inputsalary=p.getsalary();

163 String inputmajor=p.getmajor();

164 String inputduty=p.getduty();

165 codeinput.setText(inputcode);

166 sexyinput.setText(inputsexy);

167 ageinput.setText(inputage);

168 birthdayinput.setText(inputbirthday);

169 addressinput.setText(inputaddress);

170 salaryinput.setText(inputsalary);

171 majorinput.setText(inputmajor);

172 dutyinput.setText(inputduty);

173 }

174 });

175 ///返回主菜单

176 bereturn.addActionListener(new ActionListener()

177 {

178 public void actionPerformed(ActionEvent Event)

179 {

180 teachermanageframe manageframe=new teachermanageframe();

181 manageframe.setVisible(true);

182 teacherinfoframe.dispose();

183 }

184 });

185 ///进入添加主界面

186 addition.addActionListener(new ActionListener()

187 {

188 public void actionPerformed(ActionEvent Event)

189 {

190 addframe2 addfr=new addframe2();

191 addfr.setVisible(true);

192 }

193 });

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

195 update.addActionListener(new ActionListener()

196 {

197 public void actionPerformed(ActionEvent Event)

198 {

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

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

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

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

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

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

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

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

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

208 nameinput.addItem(name1);

209 nameinput.setSelectedItem(name1);

210 codeinput.setText(code1);

211 ageinput.setText(age1);

212 sexyinput.setText(sexy1);

213 addressinput.setText(address1);

214 birthdayinput.setText(birthday1);

215 salaryinput.setText(salary1);

216 majorinput.setText(major1);

217 dutyinput.setText(duty1);

218 }

219 });

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

221 delete.addActionListener(new ActionListener()

222 {

223 public void actionPerformed(ActionEvent Event)

224 {

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

226 storesystem2 store=new storesystem2();

227 try

228 {

229 Connection con=store.getConnection();

230 Statement st=con.createStatement();

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

232 st.executeUpdate(sql);

233 }

234 catch(Exception e){}

235 nameinput.removeItem(namestring);

236 }

237 });

238 }

239 }


【代码说明】代码第57~70行创建窗口并设置窗口的各个属性。第71~149行设置标签和按钮控件等。第151~174行侦听下拉列表框的选择并作出反馈。第195~219行从数据库表提取数据并显示到界面中。第221~237行删除数据。

【运行效果】整个领导信息系统的界面设计完毕。程序段的运行结果如图26.22所示。

26.8.3 领导信息界面的设计 - 图1

图 26.22 领导信息系统界面

【实例26.17】单击“添加”按钮,会弹出一个对话框,这是一个框架界面。下面显示信息的控件组的实现代码。


01 ///主运行类

02 ///main指主框架

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

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

05 import java.awt.*;

06 import javax.swing.*;

07 import java.sql.*;

08 import java.awt.event.*;

09 import java.util.Vector;

10 ///这个是领导信息系统添加信息框架类

11 ///通过九个文本域将不同信息的领导分别输出在其中

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

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

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

15 class addframe3 extends JPanel

16 {

17 String codetext;

18 String agetext;

19 String sexytext;

20 String birthdaytext;

21 String addresstext;

22 String salarytext;

23 String majortext;

24 String dutytext;

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 teacher ss;

30 JFrame leaderraddframe;

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 addframe3()

40 {

41 leaderraddframe=new JFrame();

42 leaderraddframe.setTitle("领导添加系统");

43 leaderraddframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

44 leaderraddframe.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 leaderraddframe.setLocation(x, y);

52 leaderraddframe.setVisible(true);

53 //leaderraddframe.setResizable(false);

54 leaderraddframe.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 salary=new JLabel("薪水");

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

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

66 final JTextField codeinput=new JTextField(10);

67 final JTextField sexyinput=new JTextField(10);

68 final JTextField ageinput=new JTextField(10);

69 final JTextField birthdayinput=new JTextField(10);

70 final JTextField addressinput=new JTextField(10);

71 final JTextField salaryinput=new JTextField(10);

72 final JTextField majorinput=new JTextField(10);

73 final JTextField dutyinput=new JTextField(10);

74 JLabel title=new JLabel("领导被添加的基本信息");

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

76 GridBagConstraints constraints=new GridBagConstraints();

77 constraints.fill=GridBagConstraints.NONE;

78 constraints.weightx=4;

79 constraints.weighty=7;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

101 ///最后,再将这些值存储到领导对象中,并且这个领导对象是一个静态的对象

102 additionbutton.addActionListener(new ActionListener()

103 {

104 public void actionPerformed(ActionEvent Event)

105 {

106 try

107 {

108 String nametext=nameinput.getText();

109 codetext=codeinput.getText();

110 agetext=ageinput.getText();

111 sexytext=sexyinput.getText();

112 birthdaytext=birthdayinput.getText();

113 addresstext=addressinput.getText();

114 salarytext=salaryinput.getText();

115 dutytext=dutyinput.getText();

116 majortext=majorinput.getText();

117 storesystem2 store=new storesystem2();

118 Connection con=store.getConnection();

119 Statement st=con.createStatement();

120 String sql="insert into teacherinfo

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

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

123 st.executeUpdate(sql);

124 ss=new teacher(nametext, codetext);

125 ss.setage(agetext);

126 ss.setsexy(sexytext);

127 ss.setaddress(addresstext);

128 ss.setbirthday(birthdaytext);

129 ss.setsalary(salarytext);

130 ss.setmajor(majortext);

131 ss.setduty(dutytext);

132 Vector vec=new Vector();

133 vec.add(ss);

134 }

135 catch(Exception e){}

136 leaderraddframe.dispose();

137 }

138 });

139 }

140 }


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

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

26.8.3 领导信息界面的设计 - 图2

图 26.23 领导添加信息系统界面

至止,程序全部设计完毕。其实,这个实例程序还有点粗糙,希望读者能够在学习的时候,再添加一些功能,从而检验自己对本书的掌握情况。