我将 JTree 与 TreeNode 一起使用,它扩展了 DefaultMutableTreeNode。当我添加新节点时,我无法更新 JTree。任何帮助将不胜感激
问问题
16322 次
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 回答