我在我的GUI中使用了JTree並將其添加到JFrame中。當我想更新它並在程序的另一部分中更改它的節點時(程序運行時,執行操作時),我嘗試添加新節點或刪除節點;但我的界面不會改變。請給我一個解決方案。在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