在学习java的时候 在看到awt一章的时候 遇到了一个问题。 button可以添加 ActionListener ,然后实现 actionPerformed(ActionEvent e)  方法
TextField 也可以添加这个监听器 然后实现这个方法  我想问一下他们出发这个事件的条件是什么?
 button是你在button上按下键的时候 而TextField 确实你输入回车的时候 为什么是这样啊?那别的控件对象又是什么呢?

解决方案 »

  1.   

    lz
    这是常识
    至于其它的,你可以去查看api帮助
    为什么这样?这是jvm设计时候硬性规定的你也可以自己设计个jvm,你想让你的控件什么时候执行事件就什么时候
      

  2.   

    事件源上发生事件,比如,按钮被单击等等,actionPerformed就会被调用。事件源就是组件,不同的组建会发生不同的事件。
      

  3.   

    要弄清楚三个概念:事件源、事件、事件监听者。
        就拿按钮来说吧!按钮就是事件源,而ActionEvent这个类所包装的就是这个事件源的具体事件(打个比方说:就像某个地方发生了车交通事故,对这个交通事事故信息进行记录)的一个类,实现了ActionListener的这个接口就是事件监听类(就好比是交警,事故发生后马上就会通知交警,让交警来处理),其实调用特定类的特定方法,其背后用到了多态的原理,一个事件源触发一个事件时,该组件就会去调用ActionListener 这个接口的actionPerformed这个方法,而你的监听类又实现了这个接口,也就是说监听类的对象就是ActionListener的一个子类,你把子类传给button这个类的addActionListener()方法,那么button就会根据对象来调用方法,从而用户编写的actionPerformed()得到调用。这也是一个Observer的设计模式。
        
      

  4.   

    至于你按下按钮为什么会调用特定的方法,这个就是button这个类内部的设计的问题,你没有必要去知道,你只要知道,你按下后它会调用什么方法就可以了。
      

  5.   

    textfield的默认action相应就是按回车键,其他的响应,比如鼠标按下,获得焦点,可参照api~~~