SWT表的“快速查找”

时间:2011-02-01 22:02:06

标签: java eclipse swt jface

我有一个显示数据库输出的表,通常可以达到或超过10,000行。我正在寻求实现一个“快速查找”功能,该功能允许用户轻松滚动到具有搜索值的行。

这个想法与Chrome或Firefox的快速查找非常相似。所以:

  1. 用户点击“CTRL + F”
  2. 弹出一个框:
  3. quick find example
  4. 然后,用户可以快速浏览表格/或/ \到每个匹配值
  5. 我的问题是,这样的表格是否已经存在?我看过NatTableXViewer,但它们似乎都是一个相对较小的变化的相当大的补充。

    我看过的另一个图书馆接近于是Lucene TableSearcher,不幸的是,这是专为过滤而非突出显示而设计的。然而,这可能是一个值得研究的途径。

3 个答案:

答案 0 :(得分:2)

它并不完全相同,但JFace确实支持过滤视图。您键入文本框并查看内容缩小到与筛选器匹配的内容。这基本上是向用户呈现搜索/查找功能的另一种方式。

您可以在Eclipse Preferences中看到这一点(关于对话框中导航树的过滤器文本字段)。请参阅org.eclipse.ui.dialogs.FilteredTree类。我不相信有FilteredTable或同等版本,但底层设施非常通用,所以将它们放在一起不需要太多工作。看看FilteredTree来源并从那里开始。

答案 1 :(得分:1)

我选择的解决方案并不像我希望的那样简单但性能令人满意。

涉及的表是可能非常大的虚拟表。因此,在加载数据集时,我们启动一个线程以列表的形式构建索引。因为这些表可能非常大(但不常见),我们为此列表设置了50mb的限制,并在我们点击它时停止索引。在大多数情况下,这是完全可以接受的,但对于较大的表格,这意味着虽然它可能较慢,但它比其他选项稳定得多。

'search'是一个带有ModifyListener的简单SWT文本框,它遍历列表,对每个条目执行'包含'。在匹配时,行和列根据索引号计算(0 = 0,0,1 = 0,1 ..)。

为此提供一个简单的'drop in'解决方案会很不错,但所提供的所有表都有太多的功能。

答案 2 :(得分:0)

使用FilteredItemsSelectionDialog对话框