搜索但不需要按钮,JFrame

时间:2012-11-13 06:45:22

标签: java database swing autocomplete jframe

我有一个JFrame,它有一个表,搜索已连接到数据库。 我想搜索,但这样做不需要按钮。因此,当我开始在文本字段中填写名称时,搜索将会立即完成。 像html中的ajax。 可以在java ???

中完成

2 个答案:

答案 0 :(得分:3)

  

因此,当我开始填写文本字段中的名称

时,搜索将会立即完成

您可以通过将DocumentListener附加到Document的{​​{1}}来对所有输入做出反应。每当用户向文本字段提供输入时(无论是通过键入,拖放,复制粘贴等),都会通知该侦听器。

然而,捕获是您想要对用户输入执行的操作。 JTextField在事件调度线程上触发,并且长线运行操作不应阻止此线程,否则UI将冻结。执行数据库查询被视为“长时间运行”。这意味着您必须确保在后台线程上执行搜索。搜索完成后,您可以更新表,该表必须在事件调度线程上完成。在这种情况下,DocumentListener类可能很有用。有关线程规则的更多信息,请参阅this tutorial

第二个问题是,您可能希望在提供新输入时取消之前的搜索。很可能用户输入的速度更快,然后您可以查询数据库并使用结果填充SwingWorker(假设网络连接速度不快)。

答案 1 :(得分:1)

是的,这可以使用附加到文本字段的actionListener在Java中完成。请参阅此处查看actionListener javadocs。

这里有一个类似的stackoverflow问题:link