如何更新JTree元素

时间:2010-04-28 15:25:01

标签: java swing jtree

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

5 个答案:

答案 0 :(得分:6)

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

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

//or... model.reload(nodeUpdatedByYou);

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

答案 1 :(得分:6)

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

public void reload()

正在使用

public void reload(TreeNode node)

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:3)

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

答案 4 :(得分:1)

您使用的是DefaultTreeModel吗?

如果是这样,请在添加使用insertNodeInto API时生成相应的事件。