0

我当前的JTree设置如下

  • 孩子 1
    • 孙子 1.1
    • 孙子 1.2
  • 孩子 2
    • 孙子 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);

我有这个错误说 Argument as a child

4

1 回答 1

2

使用DefaultTreeModel.removeNodeFromParent()

公共无效 removeNodeFromParent(MutableTreeNode 节点)

消息此以从其父节点中删除节点。这将消息 nodesWereRemoved 以创建适当的事件。这是删除节点的首选方式,因为它会为您处理事件创建。

例如 :

DefaultMutableTreeNode grandChild = (DefaultMutableTreeNode) child.getChildAt(0);
model.removeNodeFromParent(grandChild);
// no need to reload the root
于 2013-05-01T06:12:03.527 回答