下面介绍Java 提供的事件处理模型的几个重要概念。
1.事件
事件是用户在界面上的一个操作(通常使用各种输入设备,如鼠标、键盘等来完成)。不同的事件类描述不同类型的用户动作,比如按钮单击、键盘按键操作等。一个事件是事件类的实例对象。事件类的根类是java.util.EventObject。
事件对象包含事件相关的属性,可以使用EventObject类中的实例方法getSource获得事件的源对象。EventObject类的子类可以描述特定类型的事件。表8.1所示为常见事件类对应事件及用户操作。
表8.1 常见事件类对应事件及用户操作表
2.事件源
产生事件的组件叫事件源。在一个按钮上单击鼠标时,该按钮就是事件源,会产生一个ActionEvent类型的事件。
3.事件处理器(事件处理方法)
事件处理器是一个接收事件对象并进行相应处理的方法。事件处理器包含在一个类中,这个类的对象负责检查事件是否发生,若发生就激活事件处理器进行处理。
4.事件监听器(Event Listener)
事件监听器负责监听事件源上发生的特定类型的事件,当事件发生时负责处理相应的事件。事件监听器类必须实现事件监听器接口或继承事件监听器适配器类。事件监听器接口定义了处理事件必须实现的方法。(www.daowen.com)
5.注册事件监听器
为了能够让事件监听器检查某个组件(事件源)是否发生了某些事件,并且在发生时激活事件处理器进行相应的处理,必须在事件源上注册事件监听器。用“事件源组件.addXXXListener(XXXListener)”的形式为组件注册事件监视器,其中XXX对应相应的事件类。一个事件源可以添加多个监听器。
比如,为了处理按钮上的单击事件(ActionEvent事件),需要定义一个实现ActionListener接口的监视器类,并在类中重写ActionListener接口中唯一的actionPerformed()方法。一旦为按钮用“按钮对象.addActionListener(ActionListener l)”的形式注册事件监视器后,当单击按钮时发生ActionEvent事件,系统就会回调actionPerformed()方法,并执行重写的方法体中的功能代码,实现事件处理。Java虚拟机通过传递过来的ActionEvent对象,获得事件发生时与该事件及事件源相关联的信息。事件处理模型如图8.8所示。
图8.8 事件处理模型
要处理某GUI组件(假定为c)上发生的XXXEvent事件,事件处理具体步骤如下:
(1)编写一个监听器类,该监听器类实现了XXXListener接口(假定监听器类的类名为MyXXXListener)。
(2)在MyXXXListener中的相应事件处理方法中编写事件处理代码(事件处理器)。
(3)调用GUI组件c的addXXXListener()方法注册事件监听器对象。
c.addXXXListener(new MyXXXListener());
注:要处理组件上的多种事件,可以编写多个相应的监听器类,进行多次注册。也可以编写一个实现了多个监听器接口的类,进行一次注册。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。