看下面的图片,注意JRadioButtonMenuItem
不要延伸JRadioButton
,甚至没有JToggleButton
。我的猜测是他们重复代码。:P
或者他们在这些切换组件中有一个中间类?
问问题
274 次
1 回答
2
问题是 Java 不支持多重继承,否则您可以考虑同时JRadioButtonMenuItem
扩展JMenuItem
和JRadioButton
(尽管尚不清楚这是否是一个好的实现选择)。
所以这意味着你必须选择一个或另一个,在这种情况下,已经选择了扩展JMenuItem
。
现在,如果您看一下,您会看到JMenuItem
并JRadioButton
有一个共同的祖先,AbstractButton
它实际上封装了ButtonModel
与按钮当前状态相关的所有内容(武装、选定等)的存储位置。
在 a 的情况下,JRadioButtonMenuItem
它使用 a ,因此在这里您可以了解和ToggleButtonModel
共享相同模型的方式。JRadioButton
JRadioButtonMenutItem
关于视图,这一切都被委托给了BasicRadioButtonMenuItemUI
,尤其是更多地委托给BasicMenuItemUI
(它是 的父级BasicRadioButtonMenuItemUI
)。最终它依赖于当前的外观来提供不同的图标、样式、边框、字体等......
这就是整个事情的进展。
于 2012-12-04T13:15:27.137 回答