#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. Надеюсь, это поможет.