2012-12-04 42 views
0

請看下圖並注意JRadioButtonMenuItem不延伸JRadioButton,即使不是JToggleButton。我的猜測是他們重複了代碼。 :P或者他們在這些切換組件中有一箇中間類?JRadioButtonMenuItem不是JRadioButton擴展

enter image description here

+1

你可能想下載源代碼並查找每個區別 – schippi

+1

請引用圖片來源。 – trashgod

+0

你真正的問題是什麼?你想知道你是否正確地使用共享代碼的兩個類?你想知道兩個類別之間的相似之處和差異嗎? – Pops

回答

2

的事情是,Java不支持多重繼承,否則你可能會認爲有JRadioButtonMenuItem擴大雙方JMenuItemJRadioButton(雖然目前尚不清楚,如果它本來是一個不錯的實現選擇)。

所以這意味着你必須選擇一個或另一個,在這種情況下,選擇已經延長JMenuItem

現在,如果你看看,你看到JMenuItemJRadioButton有一個共同的祖先是AbstractButton實際上封裝,其中涉及到一個按鈕的當前狀態都存儲在ButtonModel(武裝,選擇等。 )。

JRadioButtonMenuItem的情況下,它採用了ToggleButtonModel,因此在這裏你有怎樣的相同的模型由JRadioButtonJRadioButtonMenutItem共享。

關於該視圖,這是全部委託到BasicRadioButtonMenuItemUI,尤其是更多到BasicMenuItemUI(這是BasicRadioButtonMenuItemUI的母公司)。最終它依賴於當前的外觀來提供不同的圖標,樣式,邊框,字體等...

這就是整個事情的方式。

+0

引用UI委託。這對代表來說是更多的工作,但也更靈活。 – trashgod