Java 当filtertext为空时,展开Jface FilteredTree上的所有项

Java 当filtertext为空时,展开Jface FilteredTree上的所有项,java,eclipse,swt,jface,Java,Eclipse,Swt,Jface,我有点迷路了,有以下问题。我正在使用一个扩展“org.eclipse.dialogs.FilterTree”的类。当filtertext为空时,树中的每个节点都将折叠。但在这种情况下,我想扩展树 谁能给我一个提示吗?最好的方法是什么?到目前为止,我已经覆盖了各种方法,但没有成功 谢谢您可以使用TreeViewer#expandAll()展开所有树 编辑1: FilteredTree会在每次更改filter text控件时刷新树,但会有一些延迟(默认为200ms)。因此,在文本控件上添加一个mod

我有点迷路了,有以下问题。我正在使用一个扩展“org.eclipse.dialogs.FilterTree”的类。当filtertext为空时,树中的每个节点都将折叠。但在这种情况下,我想扩展树

谁能给我一个提示吗?最好的方法是什么?到目前为止,我已经覆盖了各种方法,但没有成功


谢谢

您可以使用
TreeViewer#expandAll()展开所有树

编辑1:

FilteredTree
会在每次更改filter text控件时刷新树,但会有一些延迟(默认为200ms)。因此,在文本控件上添加一个modify listener以扩展所有树,此时将显示一组不同的项(可能没有),稍后刷新作业将使用自己的规则覆盖状态。因此,我们需要重写
doCreateRefreshJob()
以在空字符串的情况下展开所有树,或者重写总是在刷新作业结束时调用的
updateToolbar(布尔)
。这就是我所尝试的,并且成功了:

FilteredTree ft=新的FilteredTree(复合,SWT.FULL_选择,p,true){
@凌驾
受保护的void updateToolbar(布尔可见){
super.updateToolbar(可见);
treeViewer.expandAll();
}
};

我知道,但我应该在哪里调用该方法?什么时候?例如:我重写了方法“doCreateFilterText”。在那里,我调用父类的方法,但随后添加ModifyListener。在它的modifyText-方法中,我检查了FilterText是否为空,然后调用TreeViewer#expandAll()=>时是否无效。@Patrick如果您可以在问题中添加代码,这将非常有用。我可以提出一个更好的建议。