Java &引用;“快速查找”;对于SWT表

Java &引用;“快速查找”;对于SWT表,java,eclipse,swt,jface,Java,Eclipse,Swt,Jface,我有一个显示数据库输出的表,它通常可以多达或超过10000行。我希望实现一个“快速查找”功能,允许用户轻松滚动到一行,其中包含他们搜索的值 这个想法与Chrome或Firefox的快速查找非常相似。因此: 用户点击“CTRL+F” 弹出一个框: 然后,用户可以快速浏览表格,将/或/\推送到每个匹配值 我的问题是,这样的表格是否已经存在?我已经看过了,但它们似乎都是一个相对较小的变化,相当大的补充 我看过的另一个接近Bill的库不幸的是,它是为过滤而不是突出显示而设计的。然而,这可能是一个值得研

我有一个显示数据库输出的表,它通常可以多达或超过10000行。我希望实现一个“快速查找”功能,允许用户轻松滚动到一行,其中包含他们搜索的值

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

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


    我看过的另一个接近Bill的库不幸的是,它是为过滤而不是突出显示而设计的。然而,这可能是一个值得研究的途径。

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


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

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

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

    “搜索”是一个简单的SWT文本框,带有ModifyListener,可在列表中迭代,对每个条目执行“包含”。匹配后,根据索引编号(0=0,0,1=0,1..)计算行和列


    如果有一个简单的“插入式”解决方案就好了,但是提供的所有表都有太多的功能。

    使用FilteredItemSelectionDialog box

    谢谢,此表已经有一个筛选器(使用数据库查询进行筛选)。这个想法是,搜索将通过允许用户浏览过滤后的数据来补充过滤器。在哪里可以找到它?它是SWT的一部分还是JFace的一部分?