我使用JTree和TreeNode扩展DefaultMutableTreeNode。当我添加新节点时,我无法更新JTree.Any帮助将不胜感激
答案 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时生成相应的事件。