在java GUI中更新JTree

时间:2010-09-29 12:59:59

标签: java jtree

我在GUI中使用了JTree并将其添加到JFrame中。当我想更新它并在程序的另一部分中更改它的节点时(当程序正在运行时,作为执行的操作)我尝试添加新节点,或者删除节点;但我的界面不会改变。请给我一个解决方案。

问候

3 个答案:

答案 0 :(得分:16)

除了insertNodeInto建议,您还可以使用:

DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot();
root.add(new DefaultMutableTreeNode("another_child"));
model.reload(root);

答案 1 :(得分:2)

您需要确保在更新模型后,指示它触发事件以使任何已注册的侦听器收到有关该事件的通知。其中一个听众将是JTree,并且一旦收到该事件,它将重新绘制。

例如,DefaultTreeModel包含以下方法:

nodeChanged nodesChanged nodeStructureChanged nodesWereInserted nodesWereRemoved

此外,与所有Swing编程一样,您需要确保在事件调度线程上更新模型。

答案 2 :(得分:-1)

你的意思是GUI方面没有显示你的变化吗?您应该看看repaint()revalidate().

Here's很好地描述何时调用哪一个。