後,在我的代碼,根據條件的調整大小JTree的節點名,JTree
節點可能會或可能不會有一個Icon
。 我的問題是,當我想爲一個節點設置Icon
時,節點名稱的大小被縮小,並且「...」被追加。動態添加一個圖標時,樹已經產生
所以基本上,該節點recaulculating基於圖標的大小它的大小和裝修休息。
我怎麼能阻止這種行爲,並允許節點以擴大其規模在添加一個圖標?
這裏是沒有截圖/與圖標:
後,在我的代碼,根據條件的調整大小JTree的節點名,JTree
節點可能會或可能不會有一個Icon
。 我的問題是,當我想爲一個節點設置Icon
時,節點名稱的大小被縮小,並且「...」被追加。動態添加一個圖標時,樹已經產生
所以基本上,該節點recaulculating基於圖標的大小它的大小和裝修休息。
我怎麼能阻止這種行爲,並允許節點以擴大其規模在添加一個圖標?
這裏是沒有截圖/與圖標:
不知道你在哪裏做,但懷疑你做下的TreeModel的腳:在LayoutCache做大量的of .. well ..緩存大小,所以你必須確保它使緩存無效。這樣做的唯一途徑是通過TreeModelEvents,像(假設模型類型DefaultTreeModel的的):
myNodeData.setIcon(...);
treeModel.nodeChanged(node);
謝謝您的回答,我會嘗試這個代碼明天。其實我有我自己的'TreeNode'類,我有一個名爲'iconName'的屬性。但是我認爲'treeModel.nodeChanged(node)'會在我設置圖標的地方起作用,我可以訪問樹模型。 – 2012-02-21 19:01:11
感謝的人,在nodeChanged工作就像一個魅力:)但我有一個問題,爲什麼有兩種方法來火在樹上活動,如'nodeChanged'和'fireTreeNodesChanged' – 2012-02-22 08:34:55
跳過「人」 :-)第二個是內部使用,第一個方便外部使用 - 不是最好的設計(理想情況下,模型應該始終完全控制其變化),但在樹木的世界裏...... – kleopatra 2012-02-22 12:17:37
'所以基本上,基於圖標的大小節點recaulculating其規模和擬合rest.' - - >沒有直接回答你的問題,而沒有看到[代碼生成](http://sscce.org/)這個問題,因爲默認情況下,....開始檢查是否所有的[TreeModelEvents都正確完成](http://stackoverflow.com/a/7663094/714968) – mKorbel 2012-02-21 18:29:56
@mKorbel我知道我的問題不是那麼好形成,但是當我想寫一個測試用例時,結果非常長,所以我想也許這個問題有一個通用的解決方案,或者有人會指導我。如果我沒有找到答案,我將修改我的問題 – 2012-02-21 18:59:29
答案後@kleopatra +1(!!!他重新計算的大小!),可能不需要 – mKorbel 2012-02-21 19:01:32