Как я могу сбросить JTree?

#java #swing #jtree

#java #swing #jtree

Вопрос:

В настоящее время я работаю с JTree, точнее с CheckBoxTree , унаследованным классом, созданным JIDE. Мне нужно найти способ сбросить дерево, то есть :

  • Очистка выделения
  • Удаление узлов

Я попытался сбросить переменную Tree, TreeModel и обновить пользовательский интерфейс, но это не работает.

Есть идеи?

Ответ №1:

Сброс переменной сам по себе не поможет — все, что вы сделаете, это потеряете вашу копию ссылки на объект JTree.

Что вам нужно сделать, удалите ссылку, содержащуюся в содержащем объекте, на JTree — я предполагаю, что это какой-то GridContainer или объект Layout — удалите его из родительского ojbect, а затем вызовите updateUI для этого объекта.

Ответ №2:

Для удаления узлов вы должны получить древовидную модель и очистить ее или установить новую древовидную модель.

Чтобы очистить выделение, вызовите clearSelection() для дерева (обратите внимание, что setModel(...) уже вызывается clearSelection() , поэтому, если вы хотите сделать оба вместе, просто установите новую модель и перерисуйте).

Ответ №3:

Просто перестраивайте дерево в начале каждой итерации.

Что-то в этом роде

 RootNode=new CheckBoxTreeNode("root");
CheckBoxTree= new CheckBoxTree(RootNode);
  

помогло бы. Нет необходимости вызывать updateUI. Надеюсь, это поможет.