2013-05-01 2 views
0

Мой текущий JTree устанавливается следующимКак удалить внука из JTree?

  • Корень
  • Child 1
    • Внук 1.1
    • Grandchild 1.2
  • Ребенок 2
    • Grandchild 2.1
    • Внук 2,2

Вопрос в том, как я могу удалить любой из выбранного внучат? Когда я пробовал root.removeNodeFromParent (...), кажется, что он работает только для детей 1 и 2, а не для внука.

DefaultTreeModel model = (DefaultTreeModel) workspaceTree.getModel(); 
DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); 
DefaultMutableTreeNode child = (DefaultMutableTreeNode) root.getChildAt(0); 
child.remove(new DefaultMutableTreeNode("Grandchild 1.1")); 
model.reload(root); 

Я имею эту ошибку говоря аргумент, как ребенок

+0

Для лучшей помощи раньше, опубликовать [SSCCE] (http://sscce.org/). –

ответ

2

Использование DefaultTreeModel.removeNodeFromParent()

общественного недействительными removeNodeFromParent (MutableTreeNode узла)

Сообщение это, чтобы удалить узел из его родителя. Для создания соответствующего события будут созданы узлы messageWereRemoved. Это предпочтительный способ удаления узла, поскольку он обрабатывает создание события для вас.

Например:

DefaultMutableTreeNode grandChild = (DefaultMutableTreeNode) child.getChildAt(0); 
model.removeNodeFromParent(grandChild); 
// no need to reload the root 
+0

Я попытался removeNodeFromParent, он работает для Ребенка, но не Grandchild – CDX

+1

Опубликовать SSCCE. Ошибка в вашем коде, и ее невозможно найти, не видя кода. –

+0

Выполнено, это раздел кодов и child.remove (новый DefaultMutableTreeNode («Grandchild 1.1»)); кажется, вызывает ошибку – CDX

Смежные вопросы