gpt4 book ai didi

java - 在 JButton 之间共享状态

转载 作者:搜寻专家 更新时间:2023-11-01 01:58:36 25 4
gpt4 key购买 nike

我想创建两个或多个共享状态的 JButton,即当鼠标按钮在任一 JButton 上按下时,两者都呈现为按下(又名“武装” "),或者如果它们是复选框,则同时选中/取消选中等等。

对于用户来说,它必须看起来好像两个按钮都是相同按钮,出现在层次结构中的多个位置(实际上 Swing 不允许这样做。)

我可以通过创建一个 ButtonModel 并将相同的模型分配给两个按钮来完成一半。这会同步它们的武装/检查/选择状态等。

但是,以这种方式在按钮之间共享的一个显着效果是焦点 - 单击一个按钮会使该按钮获得焦点(由按钮内的矩形表示)并将其从另一个按钮上移除按钮。我想呈现两个按钮,就好像它们在 either 按钮真正获得焦点时被聚焦一样。

有没有一种干净的方法来做到这一点?

理想情况下,我希望它独立于所选的外观。

编辑:我发现了共享 ButtonModel 的另一个问题。当其中一个按钮失去焦点时,它将模型的 armedpressed 属性设置为 false。这发生在 处理 mousePressed 之后,因此如果您在第一个按钮获得焦点时按下第二个按钮,它不会进入按下状态,直到您再次按下它。

最佳答案

您通过对两个按钮使用相同的 ButtonModel 做出了非常好的举动。

现在解决关于焦点的问题。答案是否定的。不存在与 L&F 无关的方法。您必须覆盖 BasicButtonUI(或您正在使用的任何 ButtonUI)并覆盖焦点绘制逻辑。

关于java - 在 JButton 之间共享状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2187055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com