Java 如何";“松开”;不释放鼠标左键的JButton?

Java 如何";“松开”;不释放鼠标左键的JButton?,java,swing,jbutton,Java,Swing,Jbutton,我设置了一个鼠标拖动的侦听器。我试着将其设置为可以单击一个按钮,然后将鼠标拖动到其他按钮上以单击其他按钮。我遇到的问题是,当你点击第一个按钮时,它会变成灰色,就像等待你释放鼠标按钮一样。当您将鼠标从按钮上移开(仍然按住鼠标左键)时,它会返回到正常颜色,但在放开之前,您无法高亮显示任何内容。还有什么方法可以模拟放开鼠标并“松开”按钮,以便突出显示其他内容吗?您观察到的是摆动按钮使用的按钮的典型行为。我们将检查一个完整的示例,但请注意效果如何取决于所选外观和感觉的按钮ui委托 要获得想要的效果,您必

我设置了一个鼠标拖动的侦听器。我试着将其设置为可以单击一个按钮,然后将鼠标拖动到其他按钮上以单击其他按钮。我遇到的问题是,当你点击第一个按钮时,它会变成灰色,就像等待你释放鼠标按钮一样。当您将鼠标从按钮上移开(仍然按住鼠标左键)时,它会返回到正常颜色,但在放开之前,您无法高亮显示任何内容。还有什么方法可以模拟放开鼠标并“松开”按钮,以便突出显示其他内容吗?

您观察到的是摆动按钮使用的按钮的典型行为。我们将检查一个完整的示例,但请注意效果如何取决于所选外观和感觉的
按钮ui
委托

要获得想要的效果,您必须使用自己的变体和自定义的
ButtonModel
创建按钮,该模型使用
isRollover()
将按钮添加到程序的选择模型概念中

作为另一种选择,考虑包含一个<代码>列表选择模型,允许<代码>多个字节间选择> <代码>。给出了一个实例


这样做的根本目的是什么?这些信息可能会让我们更好地了解如何实施。我问这个问题的原因是JButton click和MouseListener是两个完全独立的、有些不相关的东西。将它们绑在一起会有一些陷阱,而实现的方法将取决于需要。我有一个按钮网格,目的是拖动鼠标并更改悬停按钮的颜色。我需要使用MouseMoved listener,但我无法将鼠标拖动到工作状态,因为(我假设)第一个按钮从未松开。如果您想在JButtons的“上方”添加一个MouseStener,您可能需要使用glasspane。当设置为可见时,glasspane将窃取鼠标输入,当不再可见时,GUI上的组件将接收输入。