当前位置: 技术问答>java相关
关于事件派发的疑惑(2)
来源: 互联网 发布时间:2015-08-02
本文导语: Input events are delivered to listeners before they are handled by their source component. This allows listeners and component subclasses to consume the event to keep the event from being processed in the default manner by the source. For example, ...
Input events are delivered to listeners before they are handled by their
source component. This allows listeners and component subclasses
to consume the event to keep the event from being processed in the
default manner by the source. For example, consuming a mouse
press event from a Button component will prevent the Button from
being activated. If there are other listeners registered, however, they
will still receive the event even if a listener down the chain
consumed it.
翻译:输入事件在被源截获前就被派发到监听器,这允许监听器和组件的子类销毁事件来防止事件被源以默认的方式处理,例如,从一个按扭组件中销毁一个鼠标按键事件将防止按扭被激活,如果有其它的监听器被注册,即使这个链上的一个监听器将该事件销毁,其它的监听器仍然能接收到该事件。
问题:1)、监听器是通过add***()被加入到源中,应该只有源知道需要派发的监听器有哪些,怎么理解事件不通过源就派发到监听器?
2)、“即使这个链上的一个监听器将该事件销毁,其它的监听器仍然能接收到该事件”,这是什么道理?或者翻译错了?
source component. This allows listeners and component subclasses
to consume the event to keep the event from being processed in the
default manner by the source. For example, consuming a mouse
press event from a Button component will prevent the Button from
being activated. If there are other listeners registered, however, they
will still receive the event even if a listener down the chain
consumed it.
翻译:输入事件在被源截获前就被派发到监听器,这允许监听器和组件的子类销毁事件来防止事件被源以默认的方式处理,例如,从一个按扭组件中销毁一个鼠标按键事件将防止按扭被激活,如果有其它的监听器被注册,即使这个链上的一个监听器将该事件销毁,其它的监听器仍然能接收到该事件。
问题:1)、监听器是通过add***()被加入到源中,应该只有源知道需要派发的监听器有哪些,怎么理解事件不通过源就派发到监听器?
2)、“即使这个链上的一个监听器将该事件销毁,其它的监听器仍然能接收到该事件”,这是什么道理?或者翻译错了?
|
1,这里指的源就是指注册监听器的组件,要看是什么事件,如果是你自己定义的事件,你当然可以先处理一下在post到事件队列,而组件外界因素产生的事件是直接派发给注册到ListenerList中的监听器,而不是派发到组件,java中的swing/awt框架大量采用Observer设计模式,你联系起来看就很明白了。
2,没翻译错,比如你在一个按钮内对ActionEvent注册了多个Listener,那即使在一个Listener里面销毁这个事件其他监听器仍然响应,因为他的响应不以是否销毁为标准,下面是伪代码:
for(int i;i
2,没翻译错,比如你在一个按钮内对ActionEvent注册了多个Listener,那即使在一个Listener里面销毁这个事件其他监听器仍然响应,因为他的响应不以是否销毁为标准,下面是伪代码:
for(int i;i
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!