JRadioButtonMenuItem
下の画像を見てください。拡張JRadioButton
されていないことに注意してくださいJToggleButton
。私の推測では、彼らはコードを繰り返します。:P
それとも、これらのトグルコンポーネント内に中間クラスがありますか?
1 に答える
問題は、Java が多重継承をサポートしていないことです。それ以外の場合は、両方を拡張することを検討できます(JRadioButtonMenuItem
ただし、それが適切な実装の選択であったかどうかは明らかではありません)。JMenuItem
JRadioButton
したがって、これは、どちらかを選択する必要があることを意味します。この場合、選択は拡張するために行われましたJMenuItem
。
さて、見てみるとJMenuItem
、ボタンの現在の状態に関連するすべてが格納されている場所 (武装、選択など)を実際にカプセル化するJRadioButton
共通の祖先があることがわかります。AbstractButton
ButtonModel
a の場合はandJRadioButtonMenuItem
を使用するToggleButtonModel
ため、同じモデルが と で共有されていることが分かりJRadioButton
ますJRadioButtonMenutItem
。
ビューに関しては、これはすべて に委譲され、BasicRadioButtonMenuItemUI
特にBasicMenuItemUI
(の親であるBasicRadioButtonMenuItemUI
) に委譲されます。最終的には、現在のルック アンド フィールに依存して、さまざまなアイコン、スタイル、境界線、フォントなどを提供します...
そして、これが全体の流れです。