7.9.6 基本信息数据查询模块设计
基本信息数据查询包括对学生信息查询和教师信息查询两部分,单击菜单“系统查询”/“基本信息”选项,进入该模块,界面运行结果如图7.16所示。
|
| (点击查看大图)图7.16 基本信息数据查询效果图 |
1.界面设计
(1)在view包下建立文件JF_view_query_jbqk.java,该文件继承轻量组件JInternal Frame,打开UI设计器设置this的layout属性为BorderLayout类型,其name属性采用默认值borderlayout1,在borderlayout1上放置1个滚动面板组件JScrollPanel和一个面板组件JPanel,其name属性采用系统默认值jScrollPanel1、jPanel1,其中jSplitPanel1的constraints属性为Center,jPanel1的constraints属性为north方向。在jScrollPanel1上添加一个JTable表格组件,用来显示班级数据,其name采用系统默认值jTable1,用来显示检索出来的数据信息。
(2)设置jPanel1的layout属性为FlowLayOut类型,其默认值为flowlayout1,其alignment属性为center,在flowlayout1上放置4个JLabel标签组件、1个JTextField文本组件和3个JComboBox列表框组件。其中设置标签组件的text属性为运行结果图上的文本名字,JTextField组件和JComboBox组件的name属性采用默认值,然后按照调整好组件之间位置。
String tabname = null; String zdname = null; String ysfname = null; String[] jTname = null;
|
至此,基本信息数据查询模块的界面设置已经完成,这里给出UI设计器中的组建结构图,如图7.17所示,读者可以参考此图进行界面设计。
2.代码设计
(1)用户首先选择查询类型,也就是选择查询什么信息,然后根据系统提供的查询参数进行条件选择,输入查询数值之后,单击“确定”按钮,进行满足条件的数据查询。单击source页打开文件源代码,导入程序所需要的类包,定义不同的String类型变量,定义一个私有方法initsize()用来初始化列表框中的数据,以供用户选择条件参数,代码如下:
|
图7.17 JF_view_query_jbqk的UI 组件结构图 |
/*******************************例程7-36 JF_view_query_jbqk.java************************/ public class JF_view_query_jbqk extends JInternalFrame { String tabname = null; String zdname = null; String ysfname = null; String[] jTname = null; private void initsize(){ jComboBox1.addItem("学生信息"); jComboBox1.addItem("教师信息"); jComboBox3.addItem("like"); jComboBox3.addItem(">"); jComboBox3.addItem("="); jComboBox3.addItem("<"); jComboBox3.addItem(">="); jComboBox3.addItem("<="); } } |
(2)用户选择不同的查询类型系统时为查询字段列表框进行字段赋值,在公共方法jComboBox1_itemStateChanged()中实现这个功能,详细代码如下:
/********************************例程7-37 JF_view_query_jbqk.java***********************/ public void jComboBox1_itemStateChanged(ItemEvent itemEvent) { if (jComboBox1.getSelectedIndex() == 0){ this.tabname = "SELECT s.stuid, c.className, s.stuname, s.sex, s.age, s.addr, s.phone FROM tb_studentinfo s , tb_classinfo c where s.classID = c.classID"; String[] name = {"学生编号","班级名称","学生姓名"," 性别","年龄","家庭住址","联系电话"}; jTname = name; jComboBox2.removeAllItems(); jComboBox2.addItem("学生编号"); jComboBox2.addItem("班级编号"); }if(jComboBox1.getSelectedIndex() == 1){ this.tabname = "SELECT t.teaid, c.className, t.teaname, t.sex, t.knowledge, t.knowlevel FROM tb_teacher t INNER JOIN tb_classinfo c ON c .classID = t.classID"; String[] name = {"教师编号","班级名称","教师姓名","性别"," 教师职称","教师等级"}; jTname = name; jComboBox2.removeAllItems(); jComboBox2.addItem("教师编号"); jComboBox2.addItem("班级编号"); } } |
(3)用户选择不同的查询字段之后,程序为实例变量zdname进行赋值,其公共方法jComboBox2_itemStateChanged()的关键代码为:
/********************************例程7-38 JF_view_query_jbqk.java***********************/ public void jComboBox2_itemStateChanged(ItemEvent itemEvent) { if (jComboBox1.getSelectedIndex() = = 0){ if (jComboBox2.getSelectedIndex() = = 0) this.zdname = "s.stuid"; if (jComboBox2.getSelectedIndex() = = 1) this.zdname = "s.classID"; }if(jComboBox1.getSelectedIndex() = = 1){ if (jComboBox2.getSelectedIndex() = = 0) this.zdname = "t.teaid"; if (jComboBox2.getSelectedIndex() = = 1) this.zdname = "t.classID"; } } |
(4)同样,当用户选择不同的运算符之后程序为实例变量ysfname进行赋值,其公共方法jComboBox3_itemStateChanged()的代码如下:
/********************************例程7-39 JF_view_query_jbqk.java***********************/ . public void jComboBox3_itemStateChanged(ItemEvent itemEvent) { this.ysfname = String.valueOf(jComboBox3.getSelectedItem()); } |
(5)用户输入检索数值之后,单击“确定”按钮,进行条件查询操作。在公共方法jByes_actionPerformed()中,定义两个String类型局部变量sqlSelect与whereSql,用来生成查询条件语句。通过公共类RetrieveObject的getTableModel()方法,进行查询操作,其参数为sqlSelect和whereSql,其详细代码如下:
/********************************例程7-40 JF_view_query_jbqk.java***********************/ public void jByes_actionPerformed(ActionEvent e) { String sqlSelect = null,whereSql = null; String valueStr = jTextField1.getText().trim(); sqlSelect = this.tabname; if (ysfname == "like" ){ whereSql = " and " + this.zdname + " " + this.ysfname + " '%" + valueStr + "%'"; }else{ whereSql = " and " + this.zdname + " " + this.ysfname + " '" + valueStr + "'"; } appstu.util.RetrieveObject retrieve = new appstu.util.RetrieveObject(); javax.swing.table.DefaultTableModel defaultmodel = null; defaultmodel = retrieve.getTableModel(jTname,sqlSelect + whereSql); jTable1.setModel(defaultmodel); if (jTable1.getRowCount() <= 0 ){ JOptionPane.showMessageDialog(null,"没有找到满足条件的数据!!!"," 系统提示",JOptionPane.INFORMATION_MESSAGE); } jTable1.setRowHeight(24); jLabel5.setText("共有数据【" + String.valueOf(jTable1.getRowCount())+ "】条"); } |
【责任编辑:
夏书 TEL:(010)68476606】