使用ActionListener和MouseListener来捕获JButton上的点击事件的优缺点

11

我有一个JButton,想要捕获它上面的鼠标点击。在JButton上使用ActionListener和使用MouseListener的实际和哲学差异是什么?


2
对于这样的编程问题,请务必阅读Swing标签Wiki中引用的在线教程中相关章节,这里是入门者的编写事件监听器的一般信息 - kleopatra
2
A vs. B?我建议C)一个“Action”。请参阅如何使用Actions了解详情。 - Andrew Thompson
3个回答

16

一个ActionListener用于处理按钮的逻辑点击。点击发生在:

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

而MouseListener仅处理低级别的鼠标事件。


4

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


3

基本上,MouseListener 用于捕获任意点击。ActionListener 用于捕获“某人操作按钮”。因此,如果您真的对激活按钮感兴趣,请使用 ActionListener。这样,无论是通过键盘还是其他机制激活,您都会收到事件。

另一方面,如果您只对点击感兴趣,则应使用 MouseListener。例如,他们点击了按钮的哪个部分,他们是否点击了无法激活的内容等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接