如何更新JTree元素

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

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

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

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

public void reload() 

正在使用

 public void reload(TreeNode node) 

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

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

 DefaultTreeModel model = (DefaultTreeModel) tree.getModel(); model.reload(); //or... model.reload(nodeUpdatedByYou); 

永远不要使用tree.updateUI()因为这是一个外观操作(虽然它可以工作)。

由于Java使用MVC来实现JTree组件,因此添加节点的操作只会更改模型。 此外,您应该通知树的表示已经进行了一些修改。 尝试使用树模型的fireTreeNodes ***方法来通知JTree对象这种修改。 有关详细信息,请参阅Java API 祝你好运。

你在使用DefaultTreeModel吗?

如果是这样,添加时使用insertNodeInto API以生成适当的事件。