Java 我不知道';我不明白consume()做什么
我一直在搜索Java文档,以了解consume做了什么,但我不理解它们提供的解释 例如,MouseEvent类包含方法consume()。Java文档声明consume():“使用此事件,因此它不会被发起它的源以默认方式处理。” 在下一段中,他们提供了一个示例,说明consume()的作用: 输入事件在被其来源正常处理之前,会被传递给侦听器。这允许侦听器和组件子类“使用”事件,以便源不会以默认方式处理它们。例如,在按钮组件上使用鼠标按下事件将阻止按钮被激活 如果我理解正确,通常一旦按钮组件上发生“鼠标按下”之类的事件,按钮应该被激活。但是通过对事件调用consume,组件(其中包含一个侦听器)将不会响应,因为事件在到达组件之前就已经被消耗或销毁了?因此,组件甚至没有机会以“默认方式”进行处理Java 我不知道';我不明白consume()做什么,java,swing,events,Java,Swing,Events,我一直在搜索Java文档,以了解consume做了什么,但我不理解它们提供的解释 例如,MouseEvent类包含方法consume()。Java文档声明consume():“使用此事件,因此它不会被发起它的源以默认方式处理。” 在下一段中,他们提供了一个示例,说明consume()的作用: 输入事件在被其来源正常处理之前,会被传递给侦听器。这允许侦听器和组件子类“使用”事件,以便源不会以默认方式处理它们。例如,在按钮组件上使用鼠标按下事件将阻止按钮被激活 如果我理解正确,通常一旦按钮组件上发生
谢谢你的帮助 基本上,可能有许多对象在“监听”这个
MouseEvent
——Java会以相反的顺序告诉每个对象它们注册为侦听器,事件发生了
通过调用
event.consume()
,您告诉Java停止告诉其他侦听器该事件已经发生,因此如果您的侦听器是第一个接收该事件的侦听器(例如,最后一个注册该事件的侦听器),没有其他侦听器会知道发生了MouseEvent
,包括任何可能导致该按钮单击的对象。基本上,可能有许多对象“侦听”该MouseEvent
——Java会以相反的顺序告诉每个对象它们已注册为侦听器,事件发生了
通过调用
event.consume()
,您告诉Java停止告诉其他侦听器该事件已经发生,因此如果您的侦听器是第一个接收该事件的侦听器(例如,最后一个注册该事件的侦听器),没有其他侦听器知道发生了MouseEvent
,包括任何可能导致该按钮单击的事件。使用事件只会影响尚未调用的可能侦听器,因此如果第一个侦听器使用该事件,则不会通知更多已注册的侦听器。这假设事件/侦听器的处理支持此功能使用事件只会影响尚未调用的可能侦听器,因此如果第一个侦听器使用该事件,则不会通知更多已注册的侦听器。这假设事件/侦听器的处理支持此功能