我有一个JFrame,它有一个表,搜索已连接到数据库。 我想搜索,但这样做不需要按钮。因此,当我开始在文本字段中填写名称时,搜索将会立即完成。 像html中的ajax。 可以在java ???
中完成答案 0 :(得分:3)
因此,当我开始填写文本字段中的名称
时,搜索将会立即完成
您可以通过将DocumentListener
附加到Document
的{{1}}来对所有输入做出反应。每当用户向文本字段提供输入时(无论是通过键入,拖放,复制粘贴等),都会通知该侦听器。
然而,捕获是您想要对用户输入执行的操作。 JTextField
在事件调度线程上触发,并且长线运行操作不应阻止此线程,否则UI将冻结。执行数据库查询被视为“长时间运行”。这意味着您必须确保在后台线程上执行搜索。搜索完成后,您可以更新表,该表必须在事件调度线程上完成。在这种情况下,DocumentListener
类可能很有用。有关线程规则的更多信息,请参阅this tutorial。
第二个问题是,您可能希望在提供新输入时取消之前的搜索。很可能用户输入的速度更快,然后您可以查询数据库并使用结果填充SwingWorker
(假设网络连接速度不快)。
答案 1 :(得分:1)
是的,这可以使用附加到文本字段的actionListener在Java中完成。请参阅此处查看actionListener javadocs。
这里有一个类似的stackoverflow问题:link