在java中,将事件源和监听器分开 , 感觉这样做好烦琐啊,
在delphi中要想处理某种事情,直接在组件对应的事件中添加事件代码,这样容易得多!
不知道java中为什么要这样设计?

解决方案 »

  1.   

    哦...不过java的awt将事件源和监听器分开的机制,到底有什么优越性呢?
    而且在接口方法的实现上,还必须把所有方法都要写上,就算自己不感兴趣的!
      

  2.   

    我觉得这样封装性比较好欢迎参观——
    http://blog.csdn.net/pcfirebird/
      

  3.   

    >>我觉得这样封装性比较好可惜牺牲了实用性为代价!!
    将事件源和监听器分开的机制,我想这么做应该还有其他原因吧
      

  4.   

    习惯了就好,返正改变不了.要不不要用JAVA开发.
      

  5.   

    写大一点的界面程序就知道好处了比如在写menuitem时,可以给new设置NewAction(继承abstractaction,是监听器的子类)。
    然后在给toolbar加一个newbutton,只需要也给他设为NewAction。同上,你可以在界面的任意一个角落加一个或多个按钮或什么控件(事件源)。而只要他们实现的功能相同,就只需要写一个Action监听器。(修改也只要改这一个就好了)以上是比较直观的好处写的时候只是一点点饶,但重构和维护极其方便。
      

  6.   

    实际上windows不也是这样的消息处理机制?
    一个窗口产生的时候就去向windows系统这个observer来注册,然后操作系统把拿到的消息在这些窗口中传递。道理都是一样的。只不过你平时写程序的时候你体会不到罢了,只能说明你水平不到位。
    慢慢体会去吧。事件源和处理本来就应该分开的。
      

  7.   

    补充几点,设置监听器的方法是add***listener,内部是有一个list来管理所有的listener的,这样就可以给一个控件添加多个listener,即使是同一种listener,他也会每个都执行一遍,这样的好处是显而易见的。如果是一次性的动作,可以直接用匿名类实现接口,匿名类的作用之一就是使编程更灵活嘛。