Java SWT树全部展开/全部折叠
如何为我自己的SWT树创建“全部展开”和“全部折叠”功能,类似于Eclipse的Package Explorer中的“全部折叠”按钮?如果您只是使用SWTJava 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
树,则必须循环遍历树中的所有项并展开/折叠每个项。例如:
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);
如果您正在使用JFaceTreeViewer
调用查看器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);
如果您使用的是JFaceTreeViewer
调用查看器collapseAll
或expandAll
方法。如果您使用的是JFace TreeViewer,请注意在扩展大型树时。解决方法是从传递给BusyIndicator::showWhile()
的runnable调用expandAll()
。在操作完成之前,为什么需要停止RedRWW?@Professor901它会停止单独绘制单个展开,从而减慢速度并可能导致闪烁。如果您使用的是JFace TreeViewer,要知道,当扩大大型树木。解决方法是从传递给BusyIndicator::showWhile()
的runnable调用expandAll()
。为什么需要停止redrwaw直到操作完成?@Professor901它会停止单独绘制单个展开,从而减慢速度,并可能导致闪烁。