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()を使用します

public void removeNodeFromParent(MutableTreeNode ノード)

親からノードを削除するには、これにメッセージを送信します。これにより、nodesWereRemoved にメッセージが送信され、適切なイベントが作成されます。これは、ノードがイベントの作成を処理するため、ノードを削除するための推奨される方法です。

例えば ​​:

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