当用户与GUI组件交互时会引发一个系统预先定义好的事件(鼠标移动,点选按钮,文本输入等),GUI由这些事件驱动。GUI事件是一个从java.awt.event.AWTEvent类扩展的某个子类对象
下图所示为java.awt.event中的事件类结构:
一 JAVA中事件处理模型
(1)事件源:是用户交互的各种GUI组件
(2)事件对象(Eventobject):封装了事件的有关信息
(3)事件监听器(Event listener)当事件发生时被通知到接收事件的监听对象,然后调用事件监听对象中的对应方法响应该事件
一个事件监听对象是实现了系统规定的事件监听接口的类的对象,事件监听接口提供了事件处理的抽象方法的描述。JAVA系统的事件监听接口类型如下图(一个监听接口往往声明了一个以上的抽象方法,每个抽象方法对应着要处理的事件动作,由用户实现它)
二 对组件的响应和处理
当需要对组件的某种事件进行相应和处理时,程序员必须满足两个步骤:(1)为组件注册 实现规定接口的事件监听器 (2)实现事件监听器接口中声明的事件处理抽象方法
例:
JButton button=new JButton("press");//新建一个组件:当用户单击事件源(java自动生成ActionEvent事件对象,它封装了用户单击事件源发生的一些信息)
button.addActionListener(new ButtonHandler());//java自动生成ActionEvent事件对象这一事件被传递给事件源button,button通过AddActionListener()方法注册了的监听ActionEvent事件的ButtonHandler监听对象 //为button组件注册事件监听器,
class ButtonHandler implements ActionListener{//然后就调用ButtonHandler方法中的actionperformed方法实现事件处理。
public void actionPerformed (ActionEvent event)//实现事件处理的方法
三 ActionEvent动作事件
ActionEvent发生了组件已经定义了的动作的事件,当动作发生,组件生成该ActionEvent,该事件传递给使用组件的add.addActionListener方法注册的每一个ActionListener对象用来接收此类事件(单击,双击,选择,回车)然后再处理
ActionEvent常用方法
(1)String getActionCommand():返回引发事件动作的命令字符串(Button会返回Button标签,JTextField会返回文本)
(2)String getSource():返回引发该事件的组件对象(此方法可以区分产生动作命令的不同事件源)