java AWT事件处理模型.
要能够让图形界面接收用户的操作,就必须给各个组件加上事件处理模型。
在事件处理的过程中,主要涉及三类对象:
Event——事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent
Event Source——事件源,事件发生的场所,通常就是各个组件,例如按钮Button
Event handler——事件处理者,接收事件对象并对其进行处理的对象
例如,如果用户用鼠标单击了按钮对象button,则该按钮button是事件源,而java运行时系统会生成ActionEvent类的对象actionE,该对象中描述了该单击事件发生时的一些信息,然后,事件处理者对象将接收由java运行时系统传递过来的事件对象actionE并进行相应的处理。
java采用了授权处理机制(Delegation Model),事件源可以把在其自身所有可能发生的事件分别授权给不同的事件处理者来处理
将事件处理者称为监听器,时刻监听着事件源上锁发生的事件类型,一旦该事件类型与自己所负责处理的事件类型一致,就马上进行处理
授权模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制
事件处理者(监听器)通常是一个类,该类如果要能够处理某种类型的事件,就必须实现与该事件类型相应的接口
每个事件类都有一个与之对应的接口
使用授权处理模型进行事件处理的一般方法归纳如下:
对于某种类型的事件XXXEvent,要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener;
事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener)方法来注册监听器。
在AWT中经常用到声明和实现多个接口
无论实现了几个接口,接口中已定义的方法必须一一实现,如果对某事件不感兴趣,可以不具体实现其方法,而用空的方法来代替