1. AWT委托事件模型的基本概念及实现事件监听的流程
事件:是指一个状态的改变或者活动的发生。例如,单击窗口关闭按钮,将改变该窗口的状态,产生窗口关闭事件;单击一个按钮,将产生单击事件等。
事件类:不同的事件需要封装成不同的事件类。JAVA在java.awt.event包中定义了许多事件类,如窗口事件类(WindowEvent)和单击事件类(AcitionEvent)等,javax.Swing.event包中也有很多事件类。
事件源:事件源由用户操作产生,产生事件的组件称为事件源。例如,用户单击窗口关闭按钮的操作,产生窗口关闭事件,此时框架窗口组件就是事件源;单击一个按钮,将产生单击事件,此时的按钮组件就是事件源等。
事件监听器:事件发生时被通知的对象。主要分两步实现:事件源注册事件监听器和事件注册方法。
在java.awt.Event包中的每个事件类都有一个对应的接口,在接口中声明了一个或多个抽象事件的处理方法,如ActionListner中的actionPerformed()方法。
如果一个类实现了事件监听器接口,即是注册了事件监听器,那么该类就具备了响应指定事件和事件处理的能力。例如,一个类为一个按钮注册了事件监听器addActionListner,并且实现了ActionListner接口中的actionPerformed()方法,则当单击事件发生时,就能执行actionPerformed()方法。
按钮单击事件的响应处理程序及处理流程为:
用户à单击按钮à事件源(Button)à注册的à单击事件监听器à创建ActionEvent事件对象eà委托执行à执行ActionListner接口中的actionPerformed(ActionEvent e)事件处理方法。
2. 窗口事件实现方案
根据接口的性质,一个类如果实现了一个接口,就必须实现接口中所有的抽象方法。因此,一个类如果要实现一个包含多个方法的接口,即使只需要处理一个事件,也必须实现所有方法,对于不需要响应的事件处理方法也必须设计为空。
JAVA为此提供了一种简便的方法,即事件适配器类,类名带有Adapter标记。这样便引出了窗口事件的两种实现方法:
1) 直接在类中实现接口,对不需要响应的窗口事件置为空
2) 利用窗口适配器(WindowAdapter),继承它,即只需实现需要响应的事件。
3. 实例:一个简单的响应单击事件和窗口事件的计算器程序雏形
该窗口模拟Windows的计算器功能,添加一个文本行和四个按钮,单击【1】,【2】,【+】按钮时,将按钮的标签添加到文本行中;点击【C】按钮时,清空文本行内容;单击窗口的关闭按钮时,将关闭窗口。
程序如下:
import java.awt.event.*;
import java.awt.*;
public