请查看下面的图片,注意JRadioButtonMenuItem
不要延伸JRadioButton
,即使不是JToggleButton
。我的猜测是他们重复代码。 :P
或许他们在这些切换组件中有一个中间类?
答案 0 :(得分:2)
问题是Java不支持多重继承,否则你可能会考虑JRadioButtonMenuItem
同时扩展JMenuItem
和JRadioButton
(虽然目前尚不清楚它是否会是良好的实施选择)。
所以这意味着您必须选择其中一个,在这种情况下,已经选择扩展JMenuItem
。
现在,如果您看一下,您会发现JMenuItem
和JRadioButton
有一个共同的祖先,AbstractButton
实际上封装了ButtonModel
所有与之相关的内容存储(武装,选择等)按钮的当前状态。
对于JRadioButtonMenuItem
,它使用的是ToggleButtonModel
,因此您可以了解JRadioButton
和JRadioButtonMenutItem
共享同一模型的方式。
关于视图,这全部委托给BasicRadioButtonMenuItemUI
,特别是BasicMenuItemUI
(BasicRadioButtonMenuItemUI
的父级)。最终它依赖于当前的Look-and-feel来提供不同的图标,样式,边框,字体等......
这就是整个事情的发展方向。