我有一个 JFrame,其中有一个表,并且搜索已连接到数据库。我想搜索,但这样做不需要按钮。因此,当我开始在文本字段中填写名称时,搜索将立即完成。就像 html 中的 ajax 一样。这可以在java中完成吗???
问问题
221 次
2 回答
3
因此,当我开始在文本字段中填写名称时,搜索将立即完成
您可以通过将 a 附加DocumentListener
到 的 来Document
对所有输入做出反应JTextField
。每次用户向文本字段提供输入时(无论是通过键入、拖放、复制粘贴等),都会通知该侦听器。
然而,关键是您想要对用户输入执行的操作。在DocumentListener
事件调度线程上触发,该线程不应被长时间运行的操作阻塞,否则您的 UI 将冻结。执行数据库查询被认为是“长时间运行的操作”。这意味着您必须确保您的搜索是在后台线程上执行的。搜索完成后,您可以更新表,这必须在 Event Dispatch Thread 上完成。该类SwingWorker
在这种情况下很有用。有关线程规则的更多信息,请参阅本教程。
第二个问题是您可能希望在提供新输入时取消先前的搜索。很可能用户可以更快地键入,然后您可以查询数据库并JTable
使用结果填充 a(假设网络连接不是那么快)。
于 2012-11-13T09:31:35.253 回答
1
是的,这可以在 Java 中使用附加到文本字段的 actionListener 来完成。有关actionListener javadocs ,请参见此处。
这里有一个类似的stackoverflow问题:link
于 2012-11-13T06:47:55.110 回答