0

看下面的图片,注意JRadioButtonMenuItem不要延伸JRadioButton,甚至没有JToggleButton。我的猜测是他们重复代码。:P或者他们在这些切换组件中有一个中间类?

在此处输入图像描述

4

1 回答 1

2

问题是 Java 不支持多重继承,否则您可以考虑同时JRadioButtonMenuItem扩展JMenuItemJRadioButton(尽管尚不清楚这是否是一个好的实现选择)。

所以这意味着你必须选择一个或另一个,在这种情况下,已经选择了扩展JMenuItem

现在,如果您看一下,您会看到JMenuItemJRadioButton有一个共同的祖先,AbstractButton它实际上封装了ButtonModel与按钮当前状态相关的所有内容(武装、选定等)的存储位置。

在 a 的情况下,JRadioButtonMenuItem它使用 a ,因此在这里您可以了解和ToggleButtonModel共享相同模型的方式。JRadioButtonJRadioButtonMenutItem

关于视图,这一切都被委托给了BasicRadioButtonMenuItemUI,尤其是更多地委托给BasicMenuItemUI(它是 的父级BasicRadioButtonMenuItemUI)。最终它依赖于当前的外观来提供不同的图标、样式、边框、字体等......

这就是整个事情的进展。

于 2012-12-04T13:15:27.137 回答