在Java GUI中更新JTree
问题描述:
我在我的GUI中使用了JTree并将其添加到JFrame中。当我想更新它并在程序的另一部分中更改它的节点时(程序运行时,执行操作时),我尝试添加新节点或删除节点;但我的界面不会改变。请给我一个解决方案。在Java GUI中更新JTree
问候
答
除了insertNodeInto建议你也可以使用:
DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
DefaultMutableTreeNode root = (DefaultMutableTreeNode)model.getRoot();
root.add(new DefaultMutableTreeNode("another_child"));
model.reload(root);
答
你需要确保更新模型后您指示它开火事件造成被通知该事件的任何注册的侦听。其中一名听众将是JTree
,并在收到活动后重新绘制。
例如,DefaultTreeModel
包含方法:你需要确保你是在事件指派更新模型
nodeChanged
nodesChanged
nodeStructureChanged
nodesWereInserted
nodesWereRemoved
此外,与所有Swing编程线程。
非常感谢您的宝贵回答!每次我想更新我的树,我使用这种方法。 – sajad 2010-09-30 12:42:16
这会起作用,但在处理大树时是一种“强力”方法。例如,如果我要循环并将1000个节点添加到已包含50,000个项目的树中,则效率非常低。 – Adamski 2010-10-05 16:30:39
在野外多久树会变得足够大,以至于变得足够慢而担心? – 2015-08-16 22:53:21