SWT的“快速查找”表

问题描述:

我有一个表格显示数据库的输出,通常可以达到10,000行以上。我正在寻找实施“快速查找”功能,这将允许用户轻松地滚动到他们搜索的值的行。SWT的“快速查找”表

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

  1. 用户点击 'CTRL + F'
  2. 一个对话框弹出:
  3. quick find example
  4. 然后,用户可以快速通过表脱脂推动/或/ \每个匹配值

我的问题是,这样的表是否已经存在?我曾看过NatTableXViewer,但它们看起来都是相当小的改动的相当大的增加。

我看过的另一个库很接近billl,这个是Lucene TableSearcher不幸的是这是为过滤而不是突出显示而设计的。但它可能是一个值得调查的途径。

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

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

“搜索”是一个简单的SWT文本框,带有ModifyListener,它遍历列表,对每个条目执行一个'contains'。匹配时,行和列从索引号(0 = 0,0,1 = 0,1 ..)计算。

本来很高兴有一个简单的'放入'解决方案,但所有提供的表格都有太多的功能。

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

您可以在Eclipse首选项(关于对话框中导航树的过滤器文本字段)中看到此操作。请参阅org.eclipse.ui.dialogs.FilteredTree类。我不相信有一个FilteredTable或等价物,但底层设施是非常通用的,所以它不应该花费太多的工作才能把它们放在一起。看看FilteredTree源代码并从那里开始。

+0

谢谢,这个表已经有一个过滤器(使用数据库查询来做过滤)。这个想法是,搜索将通过允许用户浏览过滤的数据来补充过滤器。 – 2011-02-02 09:51:34

使用FilteredItemsSelectionDialog对话框

+0

哪里可以找到它?它是SWT还是JFace的一部分? – Mot 2011-09-26 13:17:06