我不明白consume()的作用

时间:2014-07-17 22:19:18

标签: java swing events

我一直在搜索Java的文档,以了解消费的内容,但我不理解他们提供的解释。

例如,MouseEvent类包含方法consume()。 Java文档声明consume():"使用此事件,以便它不会以默认方式处理它发起的源。"

在下面的段落中,他们提供了consume()的功能示例: 输入事件在它们发起的源正常处理之前传递给侦听器。这允许侦听器和组件子类消费"事件,以便源不会以默认方式处理它们。例如,在Button组件上使用mousePressed事件将阻止Button被激活。

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

基本上,可能会有很多对象"听"对于那个MouseEvent - 并且Java以相反的顺序告诉每个人他们被注册为监听器,事件发生了。

通过调用event.consume(),您告诉Java 停止告诉其他侦听器事件发生 - 所以如果您的侦听器是第一个接收事件的人(例如,最后一个注册事件的人,没有其他听众会知道MouseEvent甚至发生了 - 包括任何负责该按钮点击的人。