2

我想检查某个javax.swing.JButton(常规按钮)是否被按下(在它被释放之前)。是否有任何选项可以检查按钮是否已关闭?

最简单的解决方案是添加一个MouseListener响应鼠标单击和释放事件的事件。但是,这不包括通过 Enter 键或任何其他方式激活按钮的情况。我不想禁用通过键盘或其他方式激活鼠标 - 我只想知道它什么时候被按下而不限制它的行为。

我尝试监听所有不同的事件,唯一响应按钮按下的两个事件是 ActionPreformed ( ActionEvent) 和 StateChanged ( ChangedEvent) 事件。ActionPreformed 每次点击执行一次,意思是在按钮被按下和释放后才执行,所以不好。当我单击一个按钮时,StateChanged 确实被调用了几次,当我释放它时被调用了几次。但是,事件对象仅包含有关源小部件(按钮)的信息,不包含有关状态更改本身的信息。这可以防止区分我们想要捕获的事件。

提前致谢!

4

1 回答 1

7

ButtonModel可以做到这一点,更多herehere或者可能是@kleopatra的题外话JMenuItem和ChangeListener

于 2011-09-21T19:38:21.387 回答