我一直在搜索Java的文档,以了解消费的内容,但我不理解他们提供的解释。
例如,MouseEvent类包含方法consume()。 Java文档声明consume():"使用此事件,以便它不会以默认方式处理它发起的源。"
在下面的段落中,他们提供了consume()的功能示例: 输入事件在它们发起的源正常处理之前传递给侦听器。这允许侦听器和组件子类消费"事件,以便源不会以默认方式处理它们。例如,在Button组件上使用mousePressed事件将阻止Button被激活。
如果我理解正确,通常一旦发生像“鼠标”这样的事件。在Button组件上发生,应该激活该按钮。但是通过在事件上调用consume,组件(包含一个侦听器)不会响应,因为事件在它到达组件之前被消耗或销毁了?因此,该组件甚至没有机会以"默认方式处理"?
感谢您的帮助。
答案 0 :(得分:4)
基本上,可能会有很多对象"听"对于那个MouseEvent
- 并且Java以相反的顺序告诉每个人他们被注册为监听器,事件发生了。
通过调用event.consume()
,您告诉Java 停止告诉其他侦听器事件发生 - 所以如果您的侦听器是第一个接收事件的人(例如,最后一个注册事件的人,没有其他听众会知道MouseEvent
甚至发生了 - 包括任何负责该按钮点击的人。