如何更新JTree元素

ibr*_*maz 1 java swing jtree

我使用JTree和TreeNode扩展DefaultMutableTreeNode.当我添加新节点时,我无法更新JTree.Any帮助将不胜感激

Ser*_*kov 6

如果您使用DefaultTreeModel尝试调用其reload()方法.

DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.reload();

//or... model.reload(nodeUpdatedByYou);
Run Code Online (Sandbox Code Playgroud)

永远不要使用,tree.updateUI()因为这是一个外观和感觉操作(虽然它的工作原理).


Ser*_*gey 6

实际上,重新加载父节点就足够了.在内部,

public void reload()
Run Code Online (Sandbox Code Playgroud)

正在使用

public void reload(TreeNode node)
Run Code Online (Sandbox Code Playgroud)

但是以root为参数,除非你要更新直接root的叶子,否则你最好使用更精细的版本.


Gno*_*upi 5

仅添加到节点是不够的,需要通知树.正确的方法是让模型负责添加/删除节点,因为它将在途中正确地通知树.

如果是DefaultTreeModel(如果您还没有创建自己的TreeModel,则应该是JTree中使用的那个),您可以使用方法insertNodeInto(MutableTreeNode newChild,MutableTreeNode parent,int index).