2010-08-11 90 views
3

我有一個JTree,我用它來顯示一些(不出意外的)分層數據。部分規範是用戶可以更改數據源(atm只是在文件之間)。現在,當發生這種情況時,我可以毫無問題地重建數據和樹節點。但是,我在獲取樹更新更改方面遇到很多困難。我試圖從它的scrollpane中刪除它,並用新的JTree替換,但我沒有看到任何這樣的。我嘗試從JTree中刪除所有內容,但沒有看到任何效果。Java-更新JTree

如何在構建JTree後顯示更改? Ninjedit:是的,我確實調用了updateUI()。

另一編輯: 我也想用我的新數據替換樹的當前數據。但是,我沒有看到任何方法將採用我構建的DefaultMutableTreeNode。即使我只是刪除JTree並調用它包含ScrollPane的updateUI,也沒有任何反應。或者如果我使用重繪。

+0

你是怎麼創建JTree的? – 2010-08-11 16:00:07

+0

通過構建節點,然後直接從它們創建JTree。 – Puppy 2010-08-11 16:02:55

+1

updateUI()用於即時更改外觀並與重新繪製組件無關。 – fasseg 2010-08-11 16:11:33

回答

5

這可能是正確的事件(JTree內部事件)沒有被解僱。例如,您可以使用node.add(...)或更好的model.insertNodeInto(...)(假設您使用的是DefaultTreeModel)來添加節點。在這種情況下,後一種方法是首選,因爲它會觸發適當的事件,導致視圖(JTree)正確更新。您的問題可能不是重新繪製UI,而是實際上通知視圖模型已更改。
所以,我建議你看看你是如何動態修改你的JTree的,如果可能的話,我建議使用DefaultTreeModel作爲你的模型來驅動視圖。

而只是爲了確保您已閱讀the Sun JTree tutorials,對不對?

+0

原來,defaultTreeModel包含我需要的所有功能。 JTree沒有提供任何有用的方法來獲取它們。一旦我從模型中創建JTree並抓取模型,一切都很簡單。 – Puppy 2010-08-13 16:14:18

+0

優秀!支付模型驅動是值得的。 – 2010-08-13 16:40:06