在java中,事件的处理非常重要,如响应键盘的输入,鼠标的点击,窗口的移动等等。java事由事件类和监听接口组成,算定义一个事件前,必须提供一个事件的监听接口以及一个事件类。java中监听接口是继承自java.util.EventListener的,事件类继承自java.util.EventObject。很多基本的事件系统已经为我们定义好了,我们只要学会调用即可,但是为了更加灵活地满足特定的要求,我们有时候需要自定义事件。
java事件监听器即一组动作接口。如键盘事件KeyEvent对应的接口是:
public interface KeyListener extends EventListener {
public void keyPressed(KeyEvent ev);
public void keyReleased(KeyEvent ev);
public void keyTyped(KeyEvent ev);
}
这个监听器定义了三个动作,键盘按下去调用KeyPressed方法,键盘抬起来调用KeyReleased,键盘被敲击一次调用KeyTyped。
事件监听器是需要注册才能使用的,注册方法如下:
public void add(listener);
事件监听器也可以注销,注销方法如下:
public void remove(listener);
事件监听器机制是观察者模式的一种,通过把事件源和事件处理流程以监听器的方法隔离开来,减少了主流程与被触发事件的执行流程间的耦合,便于代码的维护和事件处理流程的扩展。
在事件监听机制中,涉及三个角色:事件、发布者和监听器
事件:在事件源和事件监听器之间传递信息的对象实体。
发布者:在事件发生后,负责把事件发布到监听者的对象。
监听者:监听事件,并进行处理或转发的对象。
java中提供了事件监听器实现的框架,使用java事件中的事件监听器,需要熟悉以下几个类或接口:
1.EventObject:事件的基类,在java中自定义事件时需要继承的基类,其定义了事件源---Object类型的属性,可以把发生事件所在的类实例的引用传递过来,以便于在事件处理流程中使用(如果有使用要求的话)。在自定义的事件中,还可以定义自己应用所需的其他属性。
2.EventListener:自定义事件监听器必须实现的接口,没有具体方法,只起到标识作用。
AWT事件及其相应的监听器接口(1)
下表列出了所有AWT事件及其相应的监听器接口,一共10类事件,11个接口。下面这张表应能牢牢记住。