我使用JTree和TreeNode扩展DefaultMutableTreeNode.当我添加新节点时,我无法更新JTree.Any帮助将不胜感激
如果您使用DefaultTreeModel尝试调用其reload()方法.
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.reload();
//or... model.reload(nodeUpdatedByYou);
Run Code Online (Sandbox Code Playgroud)
永远不要使用,tree.updateUI()因为这是一个外观和感觉操作(虽然它的工作原理).
实际上,重新加载父节点就足够了.在内部,
public void reload()
Run Code Online (Sandbox Code Playgroud)
正在使用
public void reload(TreeNode node)
Run Code Online (Sandbox Code Playgroud)
但是以root为参数,除非你要更新直接root的叶子,否则你最好使用更精细的版本.
仅添加到节点是不够的,需要通知树.正确的方法是让模型负责添加/删除节点,因为它将在途中正确地通知树.
如果是DefaultTreeModel(如果您还没有创建自己的TreeModel,则应该是JTree中使用的那个),您可以使用方法insertNodeInto(MutableTreeNode newChild,MutableTreeNode parent,int index).
| 归档时间: |
|
| 查看次数: |
15353 次 |
| 最近记录: |