java教程5事件处理

上传人:仙*** 文档编号:252949889 上传时间:2024-11-26 格式:PPT 页数:37 大小:2.44MB
返回 下载 相关 举报
java教程5事件处理_第1页
第1页 / 共37页
java教程5事件处理_第2页
第2页 / 共37页
java教程5事件处理_第3页
第3页 / 共37页
点击查看更多>>
资源描述
标题标题标题,第一级,第二级,第三级,*,第,5,章,事件处理,Sunny Liu,weiliu_,内容提要,事件概述,事件模型组件,事件类,事件监听器类,事件适配器类,事件处理,事件适配器类,内部类、匿名类,事件概述,事件的定义,日常生活中,事件是指事件的主体在一些外部因素的驱动下,其状态或行为发生了变化,需要对其作出处理。,比如:电话铃响、门被叩响、汽车启动等都是事件,事件是用户通过,输入设备,(如:鼠标、键盘等)在程序界面上进行的操作。,事件概述,用户和程序的交互原理,说 明,:,前面所创建的,GUI,程序只实现了“,沟通第一步,”,即:用户可以通过触发事件发送信息给,GUI,程序(如:点击按钮),下面将学习如何实现“,沟通第二步,”:,GUI,程序通过处理事件回馈信息给用户,用 户,GUI,程,序,触发事件,处理事件,事件概述,事件驱动程序,用户对,GUI,控件进行操作便产生事件,,GUI,程序监听事件,并驱动相应的程序来处理事件,这个过程称为,事件驱动过程,。,事件概述,事件驱动流程图,开,始,创建图形用户界面(,GUI,),等待事件,关闭程序事件?,结,束,处理事件,是,否,处理事件,有事件处理程序?,返,回,是,否,用指定程序,处理该事件,事件概述,事件的构成,事件对象,当用户通过键盘或鼠标和应用程序进行交互时,,事件对象,就产生了,系统捕捉该事件相关的数据信息,比如:事件发生的时间,事件的类型(如:敲击键盘,或单击鼠标等)等,然后,系统将这些数据封装成为一个事件对象,最后,系统将这个事件对象传递给事件所属的应用程序,事件源,程序中,产生事件的,GUI,组件,事件处理(监听)对象,处理事件的对象,其中包含处理事件的方法,事件概述,事件的构成,以“,用户点击按钮,”事件来说明事件三要素:,GUI,界面,事件源,button,创建,Java,运行时系统,事件对象,事件处理,(监听),对象,传递,回馈,点击,事件概述,事件的构成,以日常生活中“,案件处理,”的过程作类比,长沙市岳麓区,立案,公安局,案 件,专属处理部门,分配,结案,发生事故,张 三,事件模型组件,JDK 1.0,的事件处理机制,多数事件发生在具体的组件(,Component,)对象上,通过组件对象的,handleEvent,(),方法将事件传递给相应的处理方法,如果没有相应的处理方法,则会将事件传给包含组件的上一级容器,以此类推,如果一直传到最顶层容器仍没有处理方法,则该事件不予处理,缺 点,:,重用性比较差,因为其设计没有遵循面向对象的程序设计原则,事件模型组件,JDK 1.2,的事件处理机制,增加了专门用来处理事件的类,这些类的对象称为事件监听器,当特定类型的事件发生时,相应的监听器能够监听到,并驱动处理该类事件的方法来处理,事件模型组件,JDK 1.2,的事件模型,JDK 1.2,模型基于以下组件:,事件类,事件监听器,事件适配器,事件模型组件,事件类,当一个事件发生时,系统用一个事件对象来描述该事件,每个事件对象都有对应的,事件类,事件类的特征:,java.util.EventObject,类是所有事件类的父类,事件类包含在,java.awt.event,和,javax.swing.event,包中,常见的事件类多数为,AWT,相关事件类,AWT,相关事件类均继承自,java.awt.AWTEvent,getSource,(),方法返回事件源对象,事件模型组件,AWTEvent,类,AWT,事件包括:,低级事件:,组件相关的事件,高级事件:,语义相关的事件,事件模型组件,AWTEvent,类层次图,java.util.EventObject,java.awt.AWTEvent,ItemEvent,AdjustmentEvent,ComponentEvent,ActionEvent,TextEvent,FocusEvent,ContainerEvent,InputEvent,PaintEvent,WindowEvent,KeyEvent,MouseEvent,事件模型组件,事件监听器,被委派专门,监听,和,处理,事件的对象为事件监听器,Java,语言中没有提供专门的事件监听器类,而是提供包含事件处理方法的,监听器接口,针对不同的事件类,提供了不同的事件监听器接口,例如:,与键盘事件,KeyEvent,对应的监听器接口为:,KeyListener,public interface,KeyListener,extends,EventListener,public void,keyPressed,(KeyEvent,ev,);,public void,keyReleased,(KeyEvent,ev,);,public void,keyTyped,(KeyEvent,ev,);,事件模型组件,事件监听器,事件监听器对象创建好之后,还需要将其注册到事件源上,这样监听器才可以监听该事件源。,注册,监听器语法:,事件源对象,.,addXxxListener,(,XxxListener,对象,),;,注销,监听器语法:,事件源对象,.,removeXxxListener,(,XxxListener,对象,);,事件模型组件,事件适配器,例子,:定义,KeyEvent,监听器类,public class,监听器类名,implements,KeyListener,public void,keyPressed,(KeyEvent,ev,),System.out.println,(“,键盘被按下!”,);,public void,keyReleased,(KeyEvent,ev,),public void,keyTyped,(KeyEvent,ev,),事件处理,事件处理过程,GUI,界面,创建,Java,运行时系统,事件对象,事件处理,(监听),对象,传递,回馈,触发,事件源,事件处理,实现事件处理的步骤,创建事件监听器类,创建事件监听器对象,注册事件监听器,事件处理,常用事件,动作,事件处理,为了处理动作事件(,ActionEvent,),需要为事件源对象注册监听器对象,监听器对象必须实现,ActionListener,接口,ActionListener,只包含一个抽象方法,actionPerformed,(),。当事件发生时,系统会自动调用该方法来处理事件,事件处理,常用事件,窗口,事件处理,为了处理窗口有关事件(,WindowEvent,),事件监听器类要实现,WindowListener,接口,事件类别,事件小类,处理方法,窗口事件,窗口关闭时,void,windowClosing,(WindowEvent,e),窗口初次打开,void,windowOpened,(WindowEvent,e),窗口被激活,void,windowActivated,(WindowEvent,e),窗口为非激活状态,void,windowDeactivated,(WindowEvent,e),窗口关闭后,void,windowClosed,(WindowEvent,e),窗口最小化,void,windowIconified,(WindowEvent,e),窗口最大化,void,windowDeiconified,(WindowEvent,e),事件处理,常用事件,窗口,事件处理,事件处理,常用事件,鼠标,事件处理,为了处理鼠标相关的事件(,MouseEvent,),事件监听器类要实现,MouseListener,接口,事件类别,事件小类,处理方法,鼠标事件,鼠标单击组件(按下并释放),void,mouseClicked,(MouseEvent,e),鼠标进入组件,void,mouseEntered,(MouseEvent,e),鼠标离开组件,void,mouseExited,(MouseEvent,e),鼠标在组件上按下,void,mousePressed,(MouseEvent,e),鼠标在组件上释放,void,mouseReleased,(MouseEvent,e),事件处理,常用事件,鼠标,事件处理,事件适配器类,事件适配器类的特征,适配器类就是一个,特殊,的事件监听器类,Java,语言只针对包含,多个抽象方法,的监听器接口,提供了相应的,XXXAdapter,(适配器),比如:,WindowListener,接口的适配器类是,WindowAdapter,内部类,内部类的定义,内部类是定义在其它类内部的类,又称为,成员类,(或嵌套类),内部类的特征,内部类可以被看做是外部类的一个成员,内部类的作用域限制在包含它的类内部,内部类的对象能访问外部类的其它成员,外部类能通过,内部类对象,能访问内部类成员,内部类,注 意,如果想要在其它(不相关的)类中创建内部类的对象,必须首先创建外部类的对象,然后间接引用内部类,,例如:,InnerClassTest,frame=new,InnerClassTest,();,frame.,MyButtonListener bListener=new InnerClassTest().MyButtonListener();,匿名类,匿名类的定义,顾名思义就是未被命名的类,匿名类的特征,在程序中只使用(即:被实例化)一次,实践,问题陈述,用户进入,Happy,聊天室登录界面:,点击“登录”按钮时,需要确保用户名和密码不能为空,要用事件处理机制来检索数据并验证其完整性,点击“退出”按钮时,则退出登录界面,实践,解决步骤,1,确定添加点击按钮的事件处理机制,2,确定要检索的数据、进行什么检索和显示出错信息,3,确定注册事件监听器的组件,4,修改已有代码,5,编译运行程序,实践,步骤,1,:,确定添加点击按钮的事件处理机制,点击按钮是动作事件(,ActionEvent,),因此要创建实现,ActionListener,接口的事件监听器类,将事件处理代码添加到,actionPerformed,(),方法中,class,ButtonListener,implements,ActionListener,public void,actionPerformed,(ActionEvent,e),/,事件处理代码,实践,步骤,2,:,确定要检验的数据、检验条件以及提示信息,检验数据,检验条件,提示信息,userNameTextField.length,(),userNameTextField.length,()=0,用户名不能为空,passwordField.length,(),passwordField.length,()=0,密码不能为空,实践,步骤,3,:,确定注册事件监听器的组件,需要注册事件监听器的组件包括:,exitButton,和,loginButton,步骤,4,:,修改已有代码,实践,步骤,5,:,编译运行程序,用户名为空时,点击“登录”按钮会弹出提示框:,密码为空时,点击“登录”按钮会弹出提示框:,小结,Java,语言中的事件处理机制,事件的三要素包括:,事件对象,事件源,事件处理器,事件模型基于以下组件:,事件类,事件监听器,适配器,小结,几种常用的事件类:,动作事件(,ActionEvent,),窗口事件(,WindowEvent,),鼠标事件(,MouseEvent,),内部类,也称为成员类(或嵌套类),是定义在其它类内部的类,未命名的类称为匿名类,匿名类没有构造函数因为类没有名字,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!