我一直在尋找JTree和TreeCellRenderer。一般來說,應用程序(只有一個JTree)只有一個TreeCellRenderer實例。應用程序對TreeCellRenderer的getTreeCellRendererComponent方法進行多次調用,以決定每個TreeCell的繪製方式,並且這種調用在很多場合(當一個單元格被選中,取消選擇,移動,滾動時等)進行。他們爲什麼決定這樣做,而不是有多個TreeCellRenderer實例,每個實例都負責一個單元格?Design for TreeCellRenderer
我正在嘗試使每個單元格包含一個複選框的JTree。該複選框可以被用戶選中/取消選中。然後,根據這些複選框的狀態設置TreeNode userObject的值。但是,從目前的JTree設計來看,這是不可能的 - 因爲只有一個JCheckBox實例,並且僅用於顯示Cell的外觀(您無法真正檢查它)。從某種意義上說,我想分開選擇TreeCell和檢查框。我有一些解決方法(實現MouseAdapter並檢查鼠標單擊是否靠近複選框的位置,然後通過更改它在TreeCellRenderer中的出現來模擬對該框的檢查),但仍然想知道這是否可以做得更直接。謝謝!
我之前研究過這個例子。這並不是我想要的:只要選中了一個節點,他們就會選中該框,但我只想在鼠標單擊複選框時選中該框,而不是在鼠標單擊單元格時選中。順便說一句,這個例子有一個錯誤。在mouseClicked方法中,實際上需要調用tree.revalidate();即使行不是0.否則一些兒童細胞將不會在DIG_IN模式下更新。 我會看看Outline對象。謝謝。 – Raymond 2010-07-08 17:04:36
@雷蒙德:不客氣。 – trashgod 2010-07-08 18:05:15
嗯..看來netbeans包不是標準java的一部分,這是真的嗎?如果我的程序使用這些,那麼使用該代碼的任何人都需要安裝netbeans呢? – Raymond 2010-07-09 04:16:08