测试是否按下了javax.swing.JButton

时间:2011-09-21 19:09:15

标签: java swing state jbutton pressed

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

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

我尝试了所有不同的事件,只有两个响应按下按钮的事件是ActionPreformed(ActionEvent)和StateChanged(ChangedEvent)事件。 ActionPreformed每次点击执行一次,这意味着只有在按下并释放按钮后才会执行,所以这并不好。当我点击一个按钮时,StateChanged确实被调用了好几次,而当我发布它的时候几次被调用了。但是,事件对象仅包含有关源窗口小部件(按钮)的信息,并且不包含有关状态更改本身的信息。这可以防止我们想要捕获哪些事件。

提前致谢!

1 个答案:

答案 0 :(得分:7)

ButtonModel可以做到这一点,更多herehere或可能偏离主题JMenuItem & ChangeListener by @kleopatra