【问题标题】:Test if a javax.swing.JButton is pressed down测试 javax.swing.JButton 是否被按下
【发布时间】:2012-04-30 15:09:13
【问题描述】:

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

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

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

提前致谢!

【问题讨论】:

  • 我不认为 JDK 提供了您所要求的内容 - 高级事件没有提供那种详细程度。您最好的选择是使用 ChangedListeners 并从按钮中检索新状态。
  • @Sii:这正是问题所在——我怎样才能找回按钮状态?似乎没有任何功能可以做到这一点。 isSelected() 没有用于这个(而且它似乎不起作用),我还没有找到任何其他功能。

标签: java swing state jbutton pressed


【解决方案1】:

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

【讨论】:

  • 非常感谢 - 这正是我所需要的 :)
  • @LightningIsMyName 很高兴为您提供帮助
  • mKorbel 是个摇摆不定的人,永远;)
  • @Hovercraft Full Of Eels 不,这不是真的,多亏了你,嗯,E...某事,不幸的是我在 Java.Sun.Forums57 上遇到了同样的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-26
  • 2021-07-14
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-01-27
相关资源
最近更新 更多