Java语言中的件及其处理.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java语言中的件及其处理

Java语言中的事件及事件处理 在GUI界面程序中,为了使程序能够接收用户的命令,系统应该能够识别这些鼠标和键盘的操作(事件)并做出响应。在此将讨论事件的产生和响应。 8.1 事件处理 通常每一个键盘或鼠标操作会引起一个系统预先定义好的事件,程序只需要定义每个特定事件发生时应该做出的响应。 在Java中,除了键盘和鼠标操作外,系统的状态改变、标准图形界面元素等都可以引发事件。 8.1.1 事件 事件处理对GUI界面的程序设计是必不可少的。程序等候用户执行一些操作,用户通过GUI界面控制程序执行操作的顺序。例如,在例7.3中创建了一个选课的GUI界面,使用鼠标选中所要的课程之后,单击按钮执行按钮事件处理程序,将选中的课程在文本框中显示。这种方法就称为事件驱动程序设计。 事件组件 一个事件包含以下3个组件: 事件对象 在Java中,每一个事件(Event)都是对象。Java.util.EventObjrct是所有事件对象的根类。这里只介绍的事件对象只属于其中的一类。这一类事件对象的根类是java.awt.AWTEvent,它是EventObject的直接子类。从名称上可以看出这一类事件对象都是与用户界面有关的。 在java的定义中,每一个事件对象都有其事件发起者和事件使用者。事件发起者对应了将要介绍的事件源,而事件使用者对应事件监听器。同时,为了在使用事件时能够访问到事件源,在每一个事件对象中都保存了一个指向事件源的引用。由于用户对组件的操作有所不同,因此java为这些不同类型的操作定义了相应的事件: 当用户通过按键或单击鼠标与应用程序交互时,一个事件便产生了。操作系统捕获该事件及与其相关的数据,例如,事件发生的时间和事件类型(按键、单击鼠标)。然后,数据被传递给事件所属的应用程序处理。 事件源 顾名思义,事件源就是事件的源头,即事件产生的地方。Java中的事件源种类很多,在此介绍的事件源指的是组件。 事件源是产生事件的对象。例如,单击一个命令按钮时,就会生成一个ActionEvent对象。ActionEvent对象包含有事件的信息。 事件处理程序 事件处理程序就是处理事件的代码(方法)。它将事件对象作为一个参数接收过来。 事件模型 Java处理事件有两种模型:基于继承的事件模式和基于代理的事件模型。 承的事件模式 在AWT1.0中,为了让程序俘获并处理GUI事件,必须扩展GUI组件并覆盖action()方法或handleEvent()方法。如果从这些方法中返回true,则将捕获事件;否则,将在GUI层中继续向上传播该事件,直到事件被捕获或到最顶层为止。 这种模型的主要缺点是事件必须由启动事件或它的容器的组件处理,这和面向对象程序设计的标准不同,它们的机能必须驻留在适当的类中;另一个缺点是在通过容器的分层结构上传递不重要的事件,而无法忽略它,造成CPU资源的浪费。 基于代理的事件模型 现在处理事件的方法是基于授权事件模型(Delegation Event Model)的,这种模型定义了标准一致的机制去产生和处理事件。它的概念十分简单: 一个源(Source)产生一个事件(Event),并把它送到一个或多个监听器(Listener)。 在这种方案中,监听器简单地等待,直到它收到一个事件。一旦事件被接收,监听器将处理这些事件,然后返回。 这种设计的优点是:处理事件的应用程序可以明确地和用来产生事件的用户接口程序分开。一个用户接口程序可以授权一段特定的代码处理一个事件。 在授权事件模型中,监听器为了接受一个事件通知而必须注册。这样有一个重要的好处:通知只被发送给哪些想接受它们的监听器。这是一种比JDK1.0版本设计的方法更有效的处理事件的方法。以前,一个事件按照封装的层次被传递,直到它被一个组件处理。这需要组件接受哪些它们不处理的事件,所以浪费了宝贵的时间,而授权事件模型则避免了这个开销。 在AWT1.1版本的JDK中,对原来的事件模型进行了改进,采用了基于代理的方式。在该模型中,当一个特定事件发生时,必须指定被通知对象,即事件处理是从一个事件源授权到一个或者多个事件监听器。如果事件与监听器之间没有关系,它被丢失。 这种代理模型是基于事件类、事件监听、事件处理和适配器4个组件。 【例8.1】在一个框架中加入一个命令按钮,当用户单击按钮时,即发生了一个单击事件,这时按钮上的文本被改变。 import javax.swing.*; import java.awt.event.*; class ButtonEventDemo extends JFrame { JButton btn; public ButtonEventDemo() //构造函数 { super(Window Title); btn=ne

文档评论(0)

yasou511137 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档