java中消息的整个流动过程是怎样的(从操作系统获得消息开始到事件监听器)?
比如一个JApplet里面直接add有一个Button,一个鼠标事件是怎么转化为ActionEvent直到Button处理掉这个消息如果那个轻量级组件JButton呢.不懂啊.......搞到头都大了...

解决方案 »

  1.   

    其实很简单的,不论什么东东,事件处理程序总是要显示的调用才能执行,可以这么理解:下面我简单写一个例子就明白了:
    //我要执行的对象
    public class N {
      ArrayList list=new ArrayList();//这里可以用来存放监听器
      
     public void up(){
        fire();//当调用up时,就触发监听器
      }
     public void register(Listener l){//注册一个监听器,可以监听该对象
       list.add(l);
     }
     
    private void fire(){
     for(int i=0;i<list.size();i++){
      Listener l=list.get(i);
       l.executer();
    }
    }
    }
    //监听器
    public class Listener{
      public void executer(){
      System.out.println("执行了");
     }
    }
    public class Test{
      public static void main(String []args){
       N n=new N();//比如你的button
       Listener l=new Listener();//比如你为button写的监听器
       n.register(l);//注册这个监听器
       
      n.up();//执行up方法时,比如你点击了按钮,就触发了监听器
    }
    }已经很明白了,其实上面就是一个简单的监听器实现,原理一样。只不过很多时候你所继承的接口里面已经就帮你实现了fire等操作,所以对你来说这些都是透明的,感觉你点击按钮时,发了一个通知给监听器一样
      

  2.   

    不用这么抽象的理解这些的,如果你想看是怎么个流程,你在你的程序ACTION处设置断点,单步运行就可以了,了解你的程序的流程不要管SUN是怎么做的
      

  3.   

    为什么要知道整个流程..难道你看电视还想知道电视的内部构造怎么运行的么.....
    既然作为java开发,面向对象思想,你只要能够实现...没必要知道内部如何运行....
      

  4.   

    为什么要知道整个流程..难道你看电视还想知道电视的内部构造怎么运行的么.....
    既然作为java开发,面向对象思想,你只要能够实现...没必要知道内部如何运行....
    -----------------------------------------------------------------------------
    这种思想完全是一种祸害,知其然不知其所以然,所以很多人都只能停留在初级阶段,跟着别人后面跑