Как я могу сделать функции «Развернуть все» и «Свернуть все» для моего собственного дерева SWT, аналогично кнопке «Свернуть все» в проводнике пакетов Eclipse?
Дерево Java SWT Развернуть все / Свернуть все
Ответы (1)
Если вы просто используете SWT Tree
, вы должны просмотреть все элементы в дереве и развернуть/свернуть каждый из них. Например:
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
.
person
greg-449
schedule
04.11.2016
Если вы используете JFace TreeViewer, имейте в виду, что существует ошибка, вызывающая указатель мыши мерцает при развертывании больших деревьев. Обходной путь — вызвать
expandAll()
из исполняемого объекта, который передается BusyIndicator::showWhile()
.
- person Rüdiger Herrmann; 04.11.2016
Зачем нужно останавливать перерисовку до завершения операции?
- person eliaspr; 10.08.2017
@Professor901 Это останавливает отрисовку отдельных расширений отдельно, замедляя работу и, возможно, вызывая мерцание.
- person greg-449; 10.08.2017