在我寫的程序中,我有一個JTree存儲我自己設計的一些對象。我創建了自己的DefaultTreeCellRenderer擴展,並覆蓋了getTreeCellRendererComponent以返回帶有一些按鈕和事物的JPanel。我發現我添加的按鈕並不像按鈕,這使得認爲與組件的交互被樹形單元「偷走」。 (如果您按一下按鈕,也被點擊周圍的按鈕在容器上,和樹都有自己要被點擊響應)Java DefaultMutableTreeNodes:由我的單元格渲染器給出的交互式顯示?
所以我的問題是這樣的:
如果我要的是樹的基本功能,加上一些按鈕,我應該使用什麼方法?
- 繼續在相同的路線;添加某種鼠標偵聽器以手動將功能添加到按鈕。
- 繼續在同一條路線上;刪除現有鼠標偵聽器並添加您自己的以實現正確的行爲。
- 擴展或實現一個稍微不同的類或接口 - 可能不是DefaultMutableTreeNodes,也許不是DefaultTreeCellRenderer等。 - 使用現有的XXXX來完成你想要做的事情。
- 避免使用JTree;製作你自己的,並不難。
我傾向於最後一個選擇 - 這裏有一個不錯的機會我實際上並不想要一棵樹的摺疊行爲,所以我可以製作自己的結構。但是,即使我選擇了這個選項,我也想知道我應該做什麼。
的建議不要重新發明輪子; - )特別是如果你對現有車輪不滿意的主要原因是你不知道如何改變它。再加上最可能的結果將是一個前衛的結構... – kleopatra 2012-07-25 09:50:08
JTree是Swing API中最複雜的組件之一(除了文本組件),如果工作需要一些時間,不要強調。一旦掌握了它,其他組件看起來就會比較簡單 – MadProgrammer 2012-07-25 16:17:00