当前位置:  技术问答>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)、“即使这个链上的一个监听器将该事件销毁,其它的监听器仍然能接收到该事件”,这是什么道理?或者翻译错了?

|
1,这里指的源就是指注册监听器的组件,要看是什么事件,如果是你自己定义的事件,你当然可以先处理一下在post到事件队列,而组件外界因素产生的事件是直接派发给注册到ListenerList中的监听器,而不是派发到组件,java中的swing/awt框架大量采用Observer设计模式,你联系起来看就很明白了。
2,没翻译错,比如你在一个按钮内对ActionEvent注册了多个Listener,那即使在一个Listener里面销毁这个事件其他监听器仍然响应,因为他的响应不以是否销毁为标准,下面是伪代码:
for(int i;i

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • window.onload事件覆盖掉body onload事件(window.onload和html body onload事件冲突)解决办法
  • JQuery文本改变触发事件如聚焦事件、失焦事件
  • Python 3 Tkinter教程之事件Event绑定处理代码实例
  • 我的一个jComboBox下拉组件,在加入itemStateChanged()监听事件后速度就非常慢,我在事件响应部分没有加任何代码也是慢?去掉监听事件后就一切正常,为何?
  • IOS开发:UIScrollView类介绍及如何简单地截获touch事件
  • 事件能传递吗,就是子类触发了一个鼠标事件,能不能也将这个鼠标事件发给父类
  • jquery阻止后续事件只执行第一个事件
  • 在JBuilder中窗体的什么事件与Delphi中的窗体的CloseQuery事件相同?
  • swing事件里怎么没有鼠标右键产生的事件?
  • 使用epoll lt或者et 每次wait到一个事件处理完后是否需要重新投递事件呢?
  • jquery button默认enter事件(回车事件)
  • 我用画布(Canvas类)接受MouseEvent事件,但我又想这个事件的getX()方法返回的坐标是以窗口的原点为原点,该怎么办?
  • 新手问题:linux的安全事件和系统事件有没有什么文件可查,或者命令查?知道的都来答啊~~~~~~~~
  • 关于java的事件问题,如何在程序中使一个button被click,从而引发这个button的事件处理代码????
  • JTextArea 怎么没有textChanged事件?怎样实现这个事件?(一定有分)
  • Linux下不能播放音乐,我用的是Red Hat 9,启动事件音效时有事件声音,但是在播放MP3或视频时却无声音
  • asp.net Textbox控件注册回车事件与触发按钮提交事件的实现方法
  • jQuery中事件对象e的事件冒泡用法示例介绍
  • java抓取鼠标事件和鼠标滚轮事件示例
  • C# DoubleClick与MouseDoubleClick区别,双击事件引发顺序
  • 如何响应JTREE中的节点点击事件??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3