Java语言中的事件及其处理.docx
《Java语言中的事件及其处理.docx》由会员分享,可在线阅读,更多相关《Java语言中的事件及其处理.docx(10页珍藏版)》请在第一文库网上搜索。
1、Java语言中的事件及事件处理在GU1界面程序中,为了使程序能够接收用户的命令,系统应该能够识别这些鼠标和键盘的操作(事件)并做出响应。在此将讨论事件的产生和响应。8.1 事件处理通常每一个键盘或鼠标操作会引起一个系统预先定义好的事件,程序只需要定义每个特定事件发生时应该做出的响应。在JaVa中,除了键盘和鼠标操作外,系统的状态改变、标准图形界面元素等都可以引发事件。8.1.1 事件事件处理对GU1界面的程序设计是必不可少的。程序等候用户执行一些操作,用户通过GU1界面控制程序执行操作的顺序。例如,在例7.3中创建了一个选课的GU1界面,使用鼠标选中所要的课程之后,单击按钮执行按钮事件处理程序
2、,将选中的课程在文本框中显示。这种方法就称为事件驱动程序设计。1 .事件组件一个事件包含以下3个组件:(1)事件对象在JaVa中,每一个事件(EVent)都是对象。Javazti1EventObjrct是所有事件对象的根类。这里只介绍的事件对象只属于其中的一类。这一类事件对象的根类是java.awt.AWTEvent,它是EventObject的直接子类。从名称上可以看出这一类事件对象都是与用户界面有关的。在java的定义中,每一个事件对象都有其事件发起者和事件使用者。事件发起者对应了将要介绍的事件源,而事件使用者对应事件监听器。同时,为了在使用事件时能够访问到事件源,在每一个事件对象中都保存
3、了一个指向事件源的引用。由于用户对组件的操作有所不同,因此java为这些不同类型的操作定义了相应的事件:当用户通过按键或单击鼠标与应用程序交互时,一个事件便产生了。操作系统捕获该事件及与其相关的数据,例如,事件发生的时间和事件类型(按键、单击鼠标)。然后,数据被传递给事件所属的应用程序处理。(2)事件源顾名思义,事件源就是事件的源头,即事件产生的地方。Java中的事件源种类很多,在此介绍的事件源指的是组件。事件源是产生事件的对象。例如,单击一个命令按钮时,就会生成一个ACtionEVent对象。ActionEvent对象包含有事件的信息。(3)事件处理程序事件处理程序就是处理事件的代码(方法)
4、。它将事件对象作为一个参数接收过来。2 .事件模型Java处理事件有两种模型:基于继承的事件模式和基于代理的事件模型。(1)承的事件模式在AwT1O中,为了让程序俘获并处理GU1事件,必须扩展GU1组件并覆盖actionO方法或hand1eEventO方法。如果从这些方法中返回true,则将捕获事件:否则,将在GU1层中继续向上传播该事件,直到事件被捕获或到最顶层为止。这种模型的主要缺点是事件必须由启动事件或它的容罂的组件处理,这和面向对象程序设计的标准不同,它们的机能必须驻留在适当的类中;另一个缺点是在通过容器的分层结构上传递不重要的事件,而无法忽略它,造成CPU资源的浪费。(2)基于代理的
5、事件模型现在处理事件的方法是基于授权事件模型(DeIegatiOnEVemMOde1)的,这种模型定义了标准一致的机制去产生和处理事件。它的概念十分简单:一个源(SoUrCe)产生一个事件(Event),并把它送到一个或多个监听器(1istener).在这种方案中,监听器简单地等待,直到它收到一个事件。一旦事件被接收,监听器将处理这些事件,然后返回。这种设计的优点是:处理事件的应用程序可以明确地和用来产生事件的用户接口程序分开。一个用户接口程序可以授权一段特定的代码处理一个事件。在授权事件模型中,监听器为了接受一个事件通知而必须注册。这样有一个重要的好处:通知只被发送给哪些想接受它们的监听器。
6、这是一种比JDK1.0版本设计的方法更有效的处理事件的方法。以前,一个事件按照封装的层次被传递,直到它被一个组件处理。这需要组件接受哪些它们不处理的事件,所以浪费了宝贵的时间,而授权事件模型则避免了这个开销。在AWTI.1版本的JDK中,对原来的事件模型进行了改进,采用了基于代理的方式。在该模型中,当一个特定事件发生时,必须指定被通知对象,即事件处理是从一个事件源授权到一个或者多个事件监听器。如果事件与监听器之间没有关系,它被丢失。这种代理模型是基于事件类、事件监听、事件处理和适配器4个组件。【例8.1在一个框架中加入一个命令按钮,当用户单击按钮时,即发生了一个单击事件,这时按钮上的文本被改变
7、。importjava.swing.*;importjava.awt.event.*;c1assButtonEventDemoextendsJFrame3Buttonbtn;pub1icButtonEventDemoO构造函数super(,WindowTit1e);btn=newJButton(,C1ickhere);getContentPane().add(Center,btn);Button1istener1isten=newButton1istenerO;btn.addAction1istener(1isten);SetSiZe(200,300);setVisib1e(true);set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 语言 中的 事件 及其 处理
