我想创建两个或多个JButton
共享状态的 s,即当鼠标按钮被按下时JButton
,两者都呈现为按下状态(也称为“武装”),或者如果它们是复选框,则同时选中/取消选中等。
对于用户来说,它必须看起来好像两个按钮是同一个按钮,出现在层次结构中的多个位置(实际上 Swing 不允许这样做。)
通过创建一个ButtonModel
按钮并将相同的模型分配给两个按钮,我可以达到一半。这会同步他们的武装/检查/选择状态等。
但是,以这种方式在按钮之间没有共享的一个显着效果是焦点 - 单击一个按钮使该按钮获得焦点(由按钮内的矩形表示)并将其从另一个按钮中移除。我想渲染两个按钮,就好像它们在任何一个按钮真正具有焦点时都具有焦点一样。
有没有一种干净的方法可以做到这一点?
理想情况下,我希望它独立于所选的外观。
编辑:我发现共享ButtonModel
. 当其中一个按钮失去焦点时,它会将模型的armed
和pressed
属性设置为false
。这发生在处理之后mousePressed
,因此如果您在第一个按钮获得焦点时按下第二个按钮,它不会进入按下状态,直到您再次按下它。