Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我不知道';我不明白consume()做什么_Java_Swing_Events - Fatal编程技术网

Java 我不知道';我不明白consume()做什么

Java 我不知道';我不明白consume()做什么,java,swing,events,Java,Swing,Events,我一直在搜索Java文档,以了解consume做了什么,但我不理解它们提供的解释 例如,MouseEvent类包含方法consume()。Java文档声明consume():“使用此事件,因此它不会被发起它的源以默认方式处理。” 在下一段中,他们提供了一个示例,说明consume()的作用: 输入事件在被其来源正常处理之前,会被传递给侦听器。这允许侦听器和组件子类“使用”事件,以便源不会以默认方式处理它们。例如,在按钮组件上使用鼠标按下事件将阻止按钮被激活 如果我理解正确,通常一旦按钮组件上发生

我一直在搜索Java文档,以了解consume做了什么,但我不理解它们提供的解释

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

在下一段中,他们提供了一个示例,说明consume()的作用: 输入事件在被其来源正常处理之前,会被传递给侦听器。这允许侦听器和组件子类“使用”事件,以便源不会以默认方式处理它们。例如,在按钮组件上使用鼠标按下事件将阻止按钮被激活

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


谢谢你的帮助

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


通过调用
event.consume()
,您告诉Java停止告诉其他侦听器该事件已经发生,因此如果您的侦听器是第一个接收该事件的侦听器(例如,最后一个注册该事件的侦听器),没有其他侦听器会知道发生了
MouseEvent
,包括任何可能导致该按钮单击的对象。

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


通过调用
event.consume()
,您告诉Java停止告诉其他侦听器该事件已经发生,因此如果您的侦听器是第一个接收该事件的侦听器(例如,最后一个注册该事件的侦听器),没有其他侦听器知道发生了
MouseEvent
,包括任何可能导致该按钮单击的事件。

使用事件只会影响尚未调用的可能侦听器,因此如果第一个侦听器使用该事件,则不会通知更多已注册的侦听器。这假设事件/侦听器的处理支持此功能使用事件只会影响尚未调用的可能侦听器,因此如果第一个侦听器使用该事件,则不会通知更多已注册的侦听器。这假设事件/侦听器的处理支持此功能