1

我将 JTree 与 TreeNode 一起使用,它扩展了 DefaultMutableTreeNode。当我添加新节点时,我无法更新 JTree。任何帮助将不胜感激

4

5 回答 5

6

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

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

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

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

于 2010-07-08T12:35:56.857 回答
6

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

public void reload()

正在使用

public void reload(TreeNode node)

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

于 2011-01-19T22:21:29.943 回答
5

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

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

于 2010-04-28T15:30:38.747 回答
3

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

于 2010-04-28T15:54:22.540 回答
1

你在用DefaultTreeModel吗?

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

于 2010-04-28T16:03:15.133 回答