中软java核心技术第19讲处理_第1页
中软java核心技术第19讲处理_第2页
中软java核心技术第19讲处理_第3页
中软java核心技术第19讲处理_第4页
中软java核心技术第19讲处理_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java程序设计主讲:4.4事件处理学习目录Java事件处理机制Java事件监听器GUI组件事件处理

事件的概述事件事件是指用户的操作,如敲击键盘、单击鼠标、双击鼠标等。当用户在AWT或Swing组件上进行操作时,事件处理系统就会产生一个相应的事件对象。事件模型 事件发生后,系统把事件传递给事件处理程序的方式称为事件模型(EventModel)。目前Java中有两种基本的事件模型:层次事件模型委托事件模型层次模型层次模型 从JDK1.0开始采用的,但在JDK1.1以后已不推荐使用。其基本方法是:当系统监听到一件事件后,首先传递给直接相关的组件,该组件可以对事件进行处理,也可以不处理;如果组件没有对事件进行处理,则向上传递给组件所在的容器,同样,该容器也可以对事件进行处理,也可以不处理;依此类推,直到顶层容器。层次模型优缺点层次模型的主要优点是简单,而且非常适合面向对象的编程模型。层次模型的缺点: (1)事件只能由产生这个事件的组件或包含这个组件的容器处理,这违反了面向对象编程的功能应包含在业务处理类中的原则。

(2)大量的资源浪费在处理不相关的事件上.这是因为事件会沿容器层次传递,会使上层容器处理一些不相关的事件。

(3)为了处理各类事件(包括相关的或不相关的事件),必须创建一个庞大的事件处理方法。委托事件模型委托事件模型事件的传递由事件监听器进行管理。任何事件处理程序必须首先向事件监听器注册。这样,当系统监听到事件后,就把事件的传递工作委托给事件监听器来完成。事件监听器通过分析事件的属性信息,把事件交给已注册的相应事件处理器来处理。

委托事件模型优点委托事件模型的优点:(1)事件不会被意外处理,而层次型模型在事件传递时就有可能发生;(2)能创建并使用适配器(adapter)类对事件进行分类。事件适配器可简化事件处理的编程实现的复杂程度;(3)委托模型有利于把任务分布到各个对象中。Java委托事件模型分析-1Java将事件处理机制分为三个部分:事件源(EventSource):

事件的产生者。事件对象(EventObject):

封装了有关该事件的信息,包括事件源引用和事件专用信息。事件监听(EventListener)器接口:

监听器负责监听事件,并且在运行时响应事件。Java委托事件模型分析-2Java事件处理机制三部分关系图如下:Java委托事件模型分析-3

委托事件模型

李先生

王律师

张律师说说这里面谁是事件源,谁是事件对象,谁是事件监听器呢?三类主要的对象:李先生(事件源)

,王/张律师(事件监听器),民事/刑事纠纷(事件对象)。

民事纠纷

授权(注册)刑事纠纷授权(注册)监听Java委托事件模型分析-4委托事件模型实例:按钮Login的委托事件模型Java委托事件模型分析-5

委托事件模型中对象对应表事件源事件事件处理李先生民事/刑事纠纷王/张律师打官司按钮Login对象单击验证用户名和密码Java委托事件模型分析-6委托事件模型李先生→到律师事务所签合同→律师事务所对李先生监听→发生了事件,律师事务所指派专门的律师处理纠纷。事件源→向事件监听器注册→监听器对事件源进行监听→发生了事件,监听器调用相应的方法进行处理。将事件委托给在控件上注册的“事件监听器”接口或“事件适配器”类进行处理。即JAVA的委托事件模型。Java委托事件模型分析-7

委托事件模型中行为对应表律师(该律师有打该类官司的能力)与律师签合同(合同中指明律师)律师对纠纷的处理声明监听器类,该类实现与事件对应的接口XXXListener使用事件源对象的addXXXListener(XXXListener)方法进行授权实现接口中的方法对发生的事件进行处理Java委托事件模型分析-8使用委托(授权)处理模型进行事件处理的一般方法:定义相应的事件监听器类,该类需要实现与该事件相对应的监听器接口XXXListener;(即找一个律师,该律师能打该类官司)事件源实例化以后,必须进行授权--使用addXXXListener(XXXListener)方法来注册监听器。(即与律师签订合同进行授权,授权后的律师立即对当事人监听)实现XXXListener接口中的方法即对事件的处理。(发生了事件,对其负责的律师帮助其打官司)事件类型Java事件类主要包含在Java.awt.event包中,它们都是抽象AWTEvent类的子类,层次结构如图所示.事件类型Java的事件类中常用的事件有:行为事件(ActionEvent)焦点事件(FocusEvent)项目事件(ItemEvent)击键事件(KeyEvent)鼠标事件(MouseEvent)文本事件(TextEvent)窗口事件(WindowEvent)事件类型

在使用GUI操作系统时,如果没有对组件所发生的事件进行严密监听并采取合适的行动,那么激发一个事件将毫无用处,因此,必须创建并注册监听器才能实现对事件的激活.在Java语言中,一个事件类对应一个事件监听接口,事件监听接口的命名方法是:去掉事件类后边的”Event”,换成”Listener”.如行为类事件取名为ActionEvent,则相应的动作事件监听接口为ActionListener.事件源、事件、监听接口事件源事件对象接口名事件处理程序ComponentActionEventActionListenervoidactionPerformed(ActionEvente)ComponentFocusEventFocusListenervoidfocusGained(FocusEvente)voidfocusLost(FocusEvente)ComponentComponentEventComponentListenervoidcomponentMoved(ComponentEvente)voidcomponentResized(ComponentEvente)事件源、事件、监听接口事件源事件对象接口名事件处理程序ComponentItemEventItemListeneritemSateChanged(ItemEvente)ComponentMouseEventMouseMotionListenermouseDragged(MouseEvent)mouseMove(MouseEvent)ComponentMouseEventMouseListenermousePressed(MouseEvent)mouseReleased(MouseEvent)mouseEntered(MouseEvent)mouseExited(MouseEvent)mouseClick(MouseEvent)ComponentKeyEventKeyListenerkeyPressed(KeyEvent)

事件源、事件、监听接口事件源事件对象接口名事件处理程序WindowWindowEventWindowListenervoidwindowOpened(WindowEvente)voidwindowClosing(WindowEvente)voidwindowActivated(WindowEvente)voidwindowDeactivated(WindowEvente)ComponentTextEventTextListenertextValueChanged(TextEvent)示例4.4.1实训任务:

设计一个系统登录窗口,要求具有口令校验的功能。

界面设计如下:作业修改聊天程序的各类事件处理方式:适配器类的方式内部类的方式匿名类的方式小结(1)层次型事件模型层次型事件模型是一种基于容器的处理模型。它的事件传递的基本方法是:当系统监听到一个事件后,首先传递给直接相关的组件,该组件可以对事件进行处理,也可以不处理;如果组件没有对事件进行处理,则向上传递给组件所在的容器。同样,该容器可以对事件进行处理,也可以不处理;依此类推,直到顶层容器。具有简单和非常适合面向对象的编程环境的优点。Java在早期的JDK1.0采用,但在JDK1.1以后已不推荐使用。(2)委托事件模型委托事件模型的基本传递方法是:事件的传递由事件监听器进行管理。任何事件处理程序需要首先向事件监听器注册。这样,当系统监听到事件后,就把事件的传递工作委托给事件监听器来完成。事件监听器通过分析事件的属性信息,把事件交给已注册的相应事件处理器来处理。采用这种事件模型,事件处理程序可以从源组件对象中分离出来。小结事件处理机制分为三部分:事件源、事件对象和事件监听器。(1)事件源事件源是就是事件的产生者。(2)事件对象事件对象是封装了有关该事件的信息。目前Java中常用的有七种事件:行为事件(ActionEvent)、焦点事件(FocusEvent)、项目事件(ItemEvent)、击键事件(KeyEvent)、鼠标事件(MouseEvent)、文本事件(TextEvent)和窗口事件(WindowEvent)。(3)事件监听器事件监听器则是一个对象,在事件发生时由事件源将通知监听

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论