随着科学技术水平的不断进步与发展,java的使用频率是越来越高了。关于javaswing的知识是非常多的,不知道大家都掌握了吗?一起来了解一下事件处理模型吧。

首先说一下,java swing中事件处理模型。

若想要使图形界面能够接收用户的操作,必须给各个组件加上事件处理机制。在事件处理的过程中,主要涉及三类对象。

1.Event(事件):用户对组件的一次操作称为一个事件,以类的形式出现。例如,键盘操作对应的事件类是KeyEvent。

2.Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮Button。

3.Event Handler(事件处理者):接收事件对象并对其进行处理的对象事件处理器,通常就是某个Java类中负责处理事件的成员方法。

例如,如果鼠标单击了按钮对象Button,则该按钮Button就是事件源,而Java运行时系统会生成ActionEvent类的对象actionEvent,该对象中描述了单击事件发生时的一些信息。之后,事件处理者对象将接收由Java运行时系统传递过来的事件对象actionEvent,并进行相应的处理。事件处理模型如图所示:

java 事件驱动架构 java的事件处理模式是什么_java事件处理模型

另外,由于同一个事件源上可能发生多种事件,因此,Java采取了授权模型(Delegation

Model),事件源可以把在其自身上所有可能发生的事件分别授权给不同的事件处理者来处理。例如,在Panel对象上既可能发生鼠标事件,也可能发生键盘事件,该Panel对象可以授权给事件处理者a来处理鼠标事件,同时授权给事件处理者b来处理键盘事件。

需要注意的是,有时也将事件处理者称为监听器,主要原因在于监听器时刻监听事件源上所有发生的事件类型,一旦该事件类型与自己所负责处理的事件类型一致,就马上进行处理。授权模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。

事件处理者(监听器)通常是一个类,该类如果能够处理某种类型的事件,就必须实现与该事件类型相对的接口。例如,一个ButtonHandler类之所以能够处理ActionEvent事件,原因在于它实现了与ActionEvent事件对应的接口ActionListener。每个事件类都有一个与之相对应的接口。