Java Swing:提交多个变量的Action Event

Posted

技术标签:

【中文标题】Java Swing:提交多个变量的Action Event【英文标题】:Java Swing: Action Event to submit multiple variables 【发布时间】:2015-07-13 10:24:42 【问题描述】:

我正在创建一个简单的应用程序,让我搜索员工的信息到目前为止,我可以搜索名字,但我想在搜索中添加更多变量,如出生日期、地址、职业等,由提交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());

   


【问题讨论】:

请包含少量代码以显示您的问题以及您尝试过的理想情况。 好的,在方法中我只想能够搜索多个变量并能够使用单个 JButton 提交它。 【参考方案1】:

您可以做的是创建一个动态面板,该面板会随着用户添加更多搜索选项而增长。本质上,您将有一个 Add Search Term 按钮,每次按下它时都会添加一个新的组合框和文本字段(例如,列表中的最后一个组合框不为空) .

你需要创建一个这样的类:

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

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

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

下一步将创建一个单独的层,该层主要进行搜索。这将使您的 UI 层包含 UI 功能。单一职责模式规定一个类只做一件事。目前,您的班级负责 UI 和 DB 操作。

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

补充几点:

    请确保使用准备好的语句而不是 SQL 连接。事实上,您的应用程序很容易受到 SQL 注入的影响。

    目前,您正在事件调度程序线程 (EDT) 上执行搜索操作。不建议这样做,因为该线程负责维护 UI。因此,如果您在此线程上执行任何密集操作,UI 将受到影响(通过变得不那么响应或完全冻结)。在单独的线程上启动您的搜索操作将确保 EDT 不会被非 UI 相关操作所困扰。然后,您可以通过 SwingUtilities.invokeLater 机制从后台线程更新 UI。

【讨论】:

以上是关于Java Swing:提交多个变量的Action Event的主要内容,如果未能解决你的问题,请参考以下文章

如何存储变量以供 Java Swing Gui 中的用户输入进一步使用?

$.post中function(data)如何接收多个返回值

如何检测在单个 Action 类中的多个提交按钮场景中单击的提交按钮? [复制]

Java 的 Swing 线程

Java Swing 程序设计03

JAVA Swing 多个按钮组