在Java swing应用程序中快速搜索?
时间:2020-03-06 14:32:35 来源:igfitidea点击:
我在徘徊自己是哪个组件最适合显示swing中的快速搜索结果。我想创建类似这样的内容,在用户可以输入文本的地方创建一个文本字段,在输入过程中,我将改善对数据库的后端快速搜索,并且希望在文本框下方显示数据,他将能够浏览结果,然后按输入将在表中显示结果。所以我的问题是,是否有任何组件已经具有此显示逻辑?
还是不是,实现它的最佳方法是什么。
如果可以在桌面应用程序上进行,则此搜索将是ajax在网络上为我提供的东西,具有相同的逻辑和相同的外观。
解决方案
使用休眠搜索。
SwingHack(http://oreilly.com/catalog/9780596009076/)书中有一个示例。
每当用户在字段中键入(或者更改)时,我们都必须先将侦听器添加到JTextField的Document上,以得到通知。
从那里,我们可以启动所需的任何服务器端代码。其结果可用于更新列表框。
请记住以下几点:
- 针对后端进行搜索的代码必须在另一个线程中
- 更新列表框的代码应更新列表框的模型
- 我们将需要管理所有后端搜索结果,以便仅使用最新结果来更新列表框(例如,用户键入" A",backenf搜索该结果。同时,用户键入" C",开始进行后端搜索) " AC"。如果" AC"搜索结果可用,则需要确保" A"搜索的结果不进入列表框)。
我们是否正在寻找类似Java Swing的自动完成组件的东西?
SwingX具有这样的组件。有关JavaDoc的信息,请参见此处。它具有许多实用方法来执行各种操作,即根据JList的内容自动完成文本框。
为了用一块石头杀死两只鸟:有一个单独的索引线程。这将:
- 只要执行搜索,就可以提高搜索速度。
- 由于索引是在单独的线程中进行的,因此可以提高UI的响应能力。
当然,根据特定应用程序,执行索引的确切方式将有很大的不同。这里是开始研究的好地方:搜索索引。并且,请忽略对Web 3.0的引用。
我强烈,强烈建议我们看一看Glazed Lists,这是那里最好的开源Java库之一,它使我们所要求的大部分超级简单。
当然有可能。这也很简单。对于术语下拉列表,只需使用弹出菜单。这很简单。输入文本的后台处理也很简单。享受!