日期:2014-05-20  浏览次数:20714 次

java中消息的整个流动过程是怎样的
java中消息的整个流动过程是怎样的(从操作系统获得消息开始到事件监听器)?
比如一个JApplet里面直接add有一个Button,一个鼠标事件是怎么转化为ActionEvent直到Button处理掉这个消息

如果那个轻量级组件JButton呢.

不懂啊.......搞到头都大了...


------解决方案--------------------
搞懂了,也会把头撑大的
------解决方案--------------------
其实很简单的,不论什么东东,事件处理程序总是要显示的调用才能执行,可以这么理解:下面我简单写一个例子就明白了:
//我要执行的对象
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等操作,所以对你来说这些都是透明的,感觉你点击按钮时,发了一个通知给监听器一样
------解决方案--------------------
不用这么抽象的理解这些的,如果你想看是怎么个流程,你在你的程序ACTION处设置断点,单步运行就可以了,了解你的程序的流程不要管SUN是怎么做的
------解决方案--------------------
学习
------解决方案--------------------
为什么要知道整个流程..难道你看电视还想知道电视的内部构造怎么运行的么.....
既然作为java开发,面向对象思想,你只要能够实现...没必要知道内部如何运行....