11

我有一个 JButton,想捕捉鼠标点击它。在 JButton 上使用 ActionListener 与使用 MouseListener 在实际和哲学上有何区别?

4

3 回答 3

15

ActionListener 用于处理按钮的逻辑单击。点击发生

  • 当鼠标被按下然后在按钮上释放时,
  • 或者当使用该按钮的键盘快捷键时,
  • 或者当按钮获得焦点并按下空格键时,
  • 或者当按钮是默认按钮并按下 Enter 时,
  • 或者当以编程方式调用按钮的 click() 方法时

MouseListener 只处理低级鼠标事件。

于 2012-11-23T09:54:42.673 回答
4

如果您只想知道按钮已被按下,请使用ActionListener. 如果您的检查涉及更深入的分析,例如鼠标状态(鼠标进入按钮,退出)等,请使用MouseListener

于 2012-11-23T09:55:21.610 回答
3

从根本上说,MouseListener 是用于获取任意点击。ActionListener 用于拾取“正在操作按钮的人”。因此,如果您真的对激活的按钮感兴趣,请使用 ActionListener。这样,如果它是通过键盘或任何其他机制激活的,您将获得该事件。

另一方面,如果您对点击特别感兴趣,则应使用 MouseListener。例如,他们点击了按钮的哪个部分,他们是否点击了不可激活的东西等。

于 2012-11-23T09:55:44.763 回答