隐藏空父母 - JFace的TreeViewer

时间:2013-06-07 13:35:00

标签: java filter swt jface treeviewer

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

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

例:
Screen shot - empty parents aren't hided
如您所见,只有一个项目与过滤器匹配:“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;添加到每个项目和每个父项并通过过滤器返回,但这些方法都不能让我满意。他们恕我直言,这项任务太复杂了。

所以,我的问题是:有没有简单的方法来实现我的目标?

的问候。

1 个答案:

答案 0 :(得分:0)

看看这个。它可能会帮助你: Vogella Blog: I like my trees filtered (Eclipse FilteredTree)