Java SWT树全部展开/全部折叠

Java SWT树全部展开/全部折叠,java,tree,swt,Java,Tree,Swt,如何为我自己的SWT树创建“全部展开”和“全部折叠”功能,类似于Eclipse的Package Explorer中的“全部折叠”按钮?如果您只是使用SWT树,则必须循环遍历树中的所有项并展开/折叠每个项。例如: boolean expanded = true to expand, false to collapse Tree tree = ... your tree tree.setRedraw(false); // Stop redraw until operation complete

如何为我自己的SWT树创建“全部展开”和“全部折叠”功能,类似于Eclipse的Package Explorer中的“全部折叠”按钮?

如果您只是使用SWT
树,则必须循环遍历树中的所有项并展开/折叠每个项。例如:

boolean expanded = true to expand, false to collapse

Tree tree = ... your tree

tree.setRedraw(false);  // Stop redraw until operation complete

TreeItem [] items = tree.getItems();

for (TreeItem item : items) {
   item.setExpanded(expanded);
}

tree.setRedraw(true);

如果您正在使用JFace
TreeViewer
调用查看器
collapseAll
expandAll
方法。

如果您只是使用SWT
,则必须循环浏览树中的所有项目,并展开/折叠每个项目。例如:

boolean expanded = true to expand, false to collapse

Tree tree = ... your tree

tree.setRedraw(false);  // Stop redraw until operation complete

TreeItem [] items = tree.getItems();

for (TreeItem item : items) {
   item.setExpanded(expanded);
}

tree.setRedraw(true);

如果您使用的是JFace
TreeViewer
调用查看器
collapseAll
expandAll
方法。

如果您使用的是JFace TreeViewer,请注意在扩展大型树时。解决方法是从传递给
BusyIndicator::showWhile()
的runnable调用
expandAll()
。在操作完成之前,为什么需要停止RedRWW?@Professor901它会停止单独绘制单个展开,从而减慢速度并可能导致闪烁。如果您使用的是JFace TreeViewer,要知道,当扩大大型树木。解决方法是从传递给
BusyIndicator::showWhile()
的runnable调用
expandAll()
。为什么需要停止redrwaw直到操作完成?@Professor901它会停止单独绘制单个展开,从而减慢速度,并可能导致闪烁。