3

我正在 JFace 中创建一个树查看器,我想要实现一些目标。

我在其中使用过滤器。过滤器效果很好,但并不完美。当我使用filter.expandAll()方法时,过滤器过滤了所有树的项目,但是有些东西真的很烦人。尽管它过滤了树的所有项目,但它并没有隐藏项目的父项,它们现在变成了空的。

示例:
屏幕截图 - 没有隐藏空的父母
如您所见,只有一项与过滤器匹配:“General/Map/New”。但是现在显示了所有父母,尽管他们实际上不包含任何孩子。

我的过滤器的部分代码:

if (element instanceof HotkeyCategory) {
    return true;
} else if (element instanceof HotkeyItem) {
    return ((HotkeyItem) element).getLabel().toLowerCase()
            .matches(searchString.toLowerCase());
}

return false;

正如你在上面看到的,我允许所有孩子的父母。但也许有一些隐藏空父母的自动方法?

我有一些想法。在将其重定向到树查看器之前进行过滤并使用允许的项目及其父项创建 ArrayList 或添加boolean show;到每个项目和每个父项并通过过滤器返回它,但这些方法都不能让我满意。对于这项任务,恕我直言,他们有点太复杂了。

所以,我的问题是:有什么简单的方法可以实现我想要的吗?

问候。

4

1 回答 1

0

看看这个。它可能会对您有所帮助: Vogella 博客:我喜欢过滤后的树 (Eclipse FilteredTree)

于 2014-01-25T13:46:20.787 回答