Java Swing:Action事件提交多个变量

时间:2015-07-13 10:24:43

标签: java swing jdbc jbutton

我正在创建一个简单的应用程序,让我搜索员工的信息到目前为止,我可以搜索名字,但我想在搜索中添加更多变量,如Date of由 JButton 上的单个动作事件提交的出生地,地址,专业等。

我该怎么做呢?我已经考虑过使用IF Else和Switch声明,但我不知道如何前进。

 private void searchActionPerformed(java.awt.event.ActionEvent evt) {                                       
     String val1 = textFirstName.getText();       

     try {
          String sql = "select * from employees where first_name = '"+val1+"'";
          stmt = con.createStatement();
          rs = stmt.executeQuery(sql);
          dataTable.setModel(DbUtils.resultSetToTableModel(rs));
        }

     catch ( SQLException err ) {
            JOptionPane.showMessageDialog(Appointments.this, err.getMessage());

   }

}

1 个答案:

答案 0 :(得分:3)

您可以做的是创建一个动态面板,随着用户添加更多搜索选项而增长。基本上,你会有一个添加搜索词按钮,每按一次就会添加一个新的组合框和文本字段(例如,如果列表中的最后一个组合框不为空)

您需要创建一个类的类:

public class SearchTerm {
    private int id;
    private String column;
    private String value;

    //Getters and setters and the rest.
    ...
}

一旦你创建了组合框(它将包含用户可以搜索的所有字段)和文本框(包含文本),你可以在搜索列表中添加一个新的SearchTerm对象条款。如果您希望允许用户删除和/或更改现有搜索字词,Id字段就会派上用场。

下一步是创建一个基本上进行搜索的单独图层。这将使您的UI层包含UI功能。单一责任模式规定一个班级只做一件事。目前,您的班级负责UI和数据库操作。

这个新图层将有一个方法,该方法接收SearchTerm项列表。从那里,您将通过迭代提供的SearchTerm个对象及其相应的值来构建搜索查询。完成后,您可以返回与您数据库中的数据类似的User个对象列表。所有这些都需要在一个单独的线程上执行。您需要查看后台工作人员。

其他一些要点:

  1. 请确保使用预准备语句而不是SQL连接。因此,您的应用程序很容易进行SQL注入。

  2. 目前,您正在对事件调度程序线程(EDT)执行搜索操作。建议不要这样做,因为此线程负责维护UI。因此,如果您对此线程执行任何密集操作,UI将受到影响(通过降低响应速度或明显冻结)。在单独的线程上启动搜索操作将确保EDT不会因非UI相关操作而陷入困境。然后,您可以通过SwingUtilities.invokeLater机制从后台线程更新UI。