VB的事件处理:每个GUI组件都响应固定的事件集,不可能改变其事件集.
C的事件处理:编写代码,可读性差,响应事件不受限制.
Java的事件处理:(VB与C的折中)事件委托模型.
Java把事件的相关信息都封装在事件对象中.(例如button,按钮等等)
所有事件的始祖类为java.util.EventObject.
AWT事件处理重要的参与对象:
(1)事件监听器:实现了特定监听器接口的对象.(可以分析事件)
(2)事件源:注册了监听器对象,事件发生时发送事件对象给他 .(捕获自己管理的事件,传给监听器)
当事件发生时,事件源把事件对象传递给 所有注册的监听器. (事件源捕获事件,传给监听器)
事件监听器利用事件对象中的信息决定如何对事件做出相应.(监听器分析事件,作出响应)
1 ActionListener lsner = .....; 2 3 JButton btn = new JButton("OK"); 4 5 btn.addActionListener(lsner); //只要一按按钮,lsner就会得到通告
实现ActionListener接口的监听器类必须有actionPerformed方法:
1 class MyListener implements ActionListener 2 3 { 4 5 ... 6 7 public void actionPerformed(Actionevent event) 8 9 { //只要用户点击按钮,JButton就会创建一个ActionEvent对象,调用此方法传递事件对象. 10 11 //reaction to button click goes here 12 13 .... 14 15 } 16 17 }