如何更新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以生成适当的事件。