我不明白消费()做什么

use*_*743 1 java events swing

我一直在搜索 Java 的文档以了解消耗的作用,但我不明白他们提供的解释。

例如,一个MouseEvent 类包含方法consume()。Java 文档指出,consume():“消耗此事件,因此它不会被发起它的源以默认方式处理。”

在下面的段落中,他们提供了一个关于消耗()做什么的例子:输入事件在它们被起源的源正常处理之前被传递给侦听器。这允许侦听器和组件子类“使用”事件,以便源不会以默认方式处理它们。例如,在 Button 组件上使用 mousePressed 事件将阻止 Button 被激活。

如果我理解正确,通常一旦 Button 组件上发生“mousePressed”之类的事件,就应该激活该按钮。但是通过在事件上调用消耗,组件(包含一个侦听器)不会响应,因为事件在它到达组件之前就被消耗或销毁了?因此组件甚至没有机会以“默认方式”进行处理?

感谢您的帮助。

use*_*tbd 5

基本上,可能有许多对象在“监听” MouseEvent——Java 以相反的顺序告诉每个对象,它们被注册为侦听器,事件发生了。

通过调用event.consume(),您是在告诉 Java停止告诉其他侦听器该事件发生了 — 因此,如果您的侦听器是第一个接收事件的侦听器(例如,最后一个注册该事件的侦听器),则其他侦听器将不会知道MouseEvent甚至发生过——包括任何导致按钮点击的事件。