我想要创建两个或多个共享状态的JButton
,即当鼠标按钮被按下时,任何一个都被呈现为被按下(又名“武装”),或者如果它们是复选框,检查/取消选中同步等在JButton之间共享状态
对于用户而言,它必须出现,就好像两个按钮都在同一按钮,出现在多个地方的层级(在现实中摇摆不允许这样。)
我可以通过创建一个单一的ButtonModel
并将相同的模型分配给两个按钮来获得一半的路程。此同步他们的武装/检查/选择的状态等
然而,这是不按钮之间共享这样一个明显的效果是聚焦 - 点击一项按钮提供该按钮的焦点(由按钮内的矩形指示)并将其从另一个按钮上移除。我想渲染这两个按钮,就好像它们被聚焦,只要或者按钮真的有焦点。
有没有一个干净的方法来做到这一点?
理想情况下,我希望它独立于所选的外观。
编辑:我发现了共享ButtonModel
的另一个问题。当其中一个按钮失去焦点时,它将模型的armed
和pressed
属性设置为false
。发生这种情况处理mousePressed
后,所以如果你按下第二个按钮时,第一个按钮有焦点,它不会进入按下状态,直到你再次按下它。
我认为你是对的,有必要扩展ButtonUI,但可以委托给默认的UI。这是我目前正在使用的技术的一部分。 – finnw 2010-02-03 22:32:49
这是什么L&F?我在另一篇文章中看到了它。 – 2013-04-01 17:34:53
@davidblaine L&F =外观 – 2013-04-01 17:36:01