Adding and removing nodes from a JTree

后端 未结 1 1109
暗喜
暗喜 2021-02-12 13:11

I have a very basic JTree. As I am on a rush, I\'d prefer not to use TreeModel if it is not needed. I wrote a SSCCE to expose the problem:

Some

1条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-02-12 13:26

    I don't know why you are deleting and recreating all the nodes.

    Update should always be done through the model. You have a couple of choices:

    Update the model directly:

    DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
    DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot();
    model.insertNodeInto(new DefaultMutableTreeNode("another_child"), root, root.getChildCount());
    

    Update the tree nodes and then notify the model:

    DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
    DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot();
    root.add(new DefaultMutableTreeNode("another_child"));
    model.reload(root);
    

    The same applies for removing nodes.

    The DefaultTreeModel has a removeNodeFromParent(...) which will update the model directly.

    Or you can use the remove(...) method of the DefaultMutableTreeNode class. In which case you would need to do the reload().

    0 讨论(0)
提交回复
热议问题