JRadioButtonMenuItem不是JRadioButton扩展

时间:2012-12-04 12:28:20

标签: java swing

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

enter image description here

1 个答案:

答案 0 :(得分:2)

问题是Java不支持多重继承,否则你可能会考虑JRadioButtonMenuItem同时扩展JMenuItemJRadioButton(虽然目前尚不清楚它是否会是良好的实施选择)。

所以这意味着您必须选择其中一个,在这种情况下,已经选择扩展JMenuItem

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

对于JRadioButtonMenuItem,它使用的是ToggleButtonModel,因此您可以了解JRadioButtonJRadioButtonMenutItem共享同一模型的方式。

关于视图,这全部委托给BasicRadioButtonMenuItemUI,特别是BasicMenuItemUIBasicRadioButtonMenuItemUI的父级)。最终它依赖于当前的Look-and-feel来提供不同的图标,样式,边框,字体等......

这就是整个事情的发展方向。