如何从JTree中删除孙子?

时间:2013-05-01 06:04:18

标签: java swing jtree

我目前的JTree设置如下

  • 孩子1
    • 孙子1.1
    • 孙子1.2
  • 孩子2
    • 孙子2.1
    • 孙子2.2

问题是,如何删除任何选定的孙子?当我尝试root.removeNodeFromParent(...)时,它似乎只适用于Child 1和Child 2而不是Grandchild。

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);

我有这样的错误,说小孩作为一个孩子

1 个答案:

答案 0 :(得分:2)

使用DefaultTreeModel.removeNodeFromParent()

  

public void removeNodeFromParent(MutableTreeNode node)

     

发送消息以从其父节点中删除节点。这将消息nodesWereRemoved创建适当的事件。这是在为您处理事件创建时删除节点的首选方法。

例如:

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