2012-02-21 20 views
1

後,在我的代碼,根據條件的調整大小JTree的節點名,JTree節點可能會或可能不會有一個Icon。 我的問題是,當我想爲一個節點設置Icon時,節點名稱的大小被縮小,並且「...」被追加。動態添加一個圖標時,樹已經產生

所以基本上,該節點recaulculating基於圖標的大小它的大小和裝修休息。

我怎麼能阻止這種行爲,並允許節點以擴大其規模在添加一個圖標?

這裏是沒有截圖/與圖標:

enter image description here

+0

'所以基本上,基於圖標的大小節點recaulculating其規模和擬合rest.' - - >沒有直接回答你的問題,而沒有看到[代碼生成](http://sscce.org/)這個問題,因爲默認情況下,....開始檢查是否所有的[TreeModelEvents都正確完成](http://stackoverflow.com/a/7663094/714968) – mKorbel 2012-02-21 18:29:56

+0

@mKorbel我知道我的問題不是那麼好形成,但是當我想寫一個測試用例時,結果非常長,所以我想也許這個問題有一個通用的解決方案,或者有人會指導我。如果我沒有找到答案,我將修改我的問題 – 2012-02-21 18:59:29

+1

答案後@kleopatra +1(!!!他重新計算的大小!),可能不需要 – mKorbel 2012-02-21 19:01:32

回答

6

不知道你在哪裏做,但懷疑你做下的TreeModel的腳:在LayoutCache做大量的of .. well ..緩存大小,所以你必須確保它使緩存無效。這樣做的唯一途徑是通過TreeModelEvents,像(假設模型類型DefaultTreeModel的的):

myNodeData.setIcon(...); 
treeModel.nodeChanged(node); 
+0

謝謝您的回答,我會嘗試這個代碼明天。其實我有我自己的'TreeNode'類,我有一個名爲'iconName'的屬性。但是我認爲'treeModel.nodeChanged(node)'會在我設置圖標的地方起作用,我可以訪問樹模型。 – 2012-02-21 19:01:11

+0

感謝的人,在nodeChanged工作就像一個魅力:)但我有一個問題,爲什麼有兩種方法來火在樹上活動,如'nodeChanged'和'fireTreeNodesChanged' – 2012-02-22 08:34:55

+0

跳過「人」 :-)第二個是內部使用,第一個方便外部使用 - 不是最好的設計(理想情況下,模型應該始終完全控制其變化),但在樹木的世界裏...... – kleopatra 2012-02-22 12:17:37

相關問題