Java 搜寻「;“隐藏数据”;在过滤树中

Java 搜寻「;“隐藏数据”;在过滤树中,java,eclipse,filter,tree,Java,Eclipse,Filter,Tree,如何在过滤后的树状视图中搜索“隐藏”数据。到目前为止,我只能搜索树名并过滤它们。现在我想搜索存储在TreeObject中的数据。 我应该将要搜索的字符串附加到哪里 我试图变得更详细: 我有一个: class TreeObject implements IAdaptable { protected String name; protected String Data; private TreeParent parent; .... 现在我想搜索它的 pro

如何在过滤后的树状视图中搜索“隐藏”数据。到目前为止,我只能搜索树名并过滤它们。现在我想搜索存储在TreeObject中的数据。 我应该将要搜索的字符串附加到哪里

我试图变得更详细:

我有一个:

    class TreeObject implements IAdaptable {
    protected String name;
    protected String Data;
    private TreeParent parent; ....
现在我想搜索它的

    protected String Data;
我如何访问: -树对象 -过滤树状视图的texfield文本

在这里,您可以看到可以覆盖的方法的图片:

这是我使用另一种过滤器类型得到的结果:


您必须覆盖
选择
方法,您正在
过滤树中设置该方法。从
的Javadoc中选择

返回给定元素是否通过此筛选器

因此,在您的实现中,您可以检查对象的字段,并决定是否应该过滤掉它

示例(不知道是否编译)


您不需要访问文本字段。您只需告诉FilteredTree它应该如何将文本与对象进行比较。请看我的答案。eclipse说,我无法覆盖该方法,因为它是最终的。哦,好吧,然后使用
ViewerFilter
。但是ViewerFilter不能在FilteredTree中使用。因为我认为只支持模式过滤器。但是“PatternFilter=new PatternFilter();”没有要重写的select-函数。@schwenk它有:@schwenk In
TreeViewer
它是抽象的。使用我在回答中提到的这个类。
    TreeViewer viewer = filteredTree.getViewer();
    viewer.addFilter(new ViewerFilter() {

        @Override
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            if (element instanceof TreeObject && filterString != null && !filterString.isEmpty()) {
                TreeObject obj = (TreeObject) element;
                String data = obj.getData().toLowerCase(); // Your Data field!
                return data.startsWith(filterString.toLowerCase());
            }
            return true;
        }
    });