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)如何接收多个返回值