欢迎来到天天文库
浏览记录
ID:39425695
大小:606.00 KB
页数:86页
时间:2019-07-03
《图形用户界面设计2事件模型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、AWT事件模型Contents1.AWT事件处理模型2.事件处理的实现为学生信息管理管理系统设计一个登陆界面,接受用户输入的账号和密码。界面如图所示:所需要的知识点常用组件和容器的使用方法及功能AWT事件处理模型例AWT事件模型设计一个图形界面,不仅仅需要画出窗口并添加组件,更重要的是为组件设计相应程序,使组件能够响应并处理用户的操作,例如单击按钮,等等当Java程序运行时,如果用户在界面上进行某种操作,系统捕获这些操作会引发相应的事件(Event),然后执行相应的事件处理程序。Java中定义了许多事件类,用来描述不同的用户行为事件与事件处理事件,就是发生在用户界面上的用户交互行为而产
2、生的一种效果,如鼠标的各种动作、键盘的操作以及发生在组件上的各种动作。每发生一个事件,程序都需要作出相应的响应,这称为事件处理。AWT事件模型事件的来源事件的来源是用户的操作每当用户在AWT组件上进行某种操作,例如用鼠标单击按钮,敲击键盘等,AWT事件处理系统会生成一个相应的事件对象事件对象描述的是用户所执行的操作,用户操作不同,事件对象的内容也会不同。AWT事件模型事件的处理事件的处理由事件处理程序完成每个AWT组件都有自己的事件处理程序当事件对象生成时,AWT事件处理系统就会将这个事件对象传递给所涉及的组件,由它们的事件处理程序进行相应处理AWT事件模型事件的模型事件处理模型,是指
3、事件产生后事件对象的传递模型JDK1.0使用的是层次模型(hierarchal)JDK1.1使用的是委托模型(delegation)层次模型JDK1.0使用的层次事件处理模型主要基于容器和组件的包含关系一个事件对象产生之后,首先被传递给直接相关的组件,该组件可以对事件进行处理,也可以忽略。若组件没有对事件进行处理,则AWT事件处理系统会将事件对象继续向上传递给组件所在的容器若容器将事件忽略,则AWT事件处理系统会将事件再继续向上传递给容器所在的容器层次模型示例:FramePanelButton1Button2事件层次事件处理模型中的事件都用Event描述,Event是java.awt中
4、定义的一个类,它有如下几个成员变量:Objecttarget事件涉及的组件longwhen事件发生的时间intid事件的类型intx,y事件产生的坐标位置Objectarg与具体事件有关的参数事件类型包括:窗口事件(移动窗口、关闭窗口等)鼠标事件(移动鼠标、按下鼠标键等)焦点事件(获得焦点、失去焦点)键盘事件(按下或松开键)ACTION事件(按动按钮等)列表框事件(在列表框中进行选择)滚动条事件(按动其中的向上或向下按钮)为了区分事件类型,需要用其事件分类标志变量id来判断事件是否属于动作事件:if(Ev.id==ACTION_EVENT){…}层次模型示例:FramePanelBut
5、ton1Button2事件生成Event的一个实例组件都继承了Component类中的handleEvent()方法,handleEvent根据事件的类型调用不同的方法,如果对事件进行了处理,就返回true,否则返回falsepublicbooleanhandleEvent(Eventevt){switch(evt.id){caseEvent.MOUSE_ENTER:returnmouseEnter(evt,evt.x,evt.y);……caseEvent.LOST_FOCUS:returnlostFocus(evt,evt.x,evt.y);}returnfalse;}publicb
6、ooleanmouseEnter(Eventevt,intx,inty){returnfalse;}层次模型importjava.awt.*;publicclassMainextendsFrame{LabelstatusBar=newLabel();publicstaticvoidmain(Stringargs[]){newMain();}Main(){super("Example");add("South",statusBar);resize(200,200);show();}层次模型publicclassMainextendsFrame{……publicbooleanhandleE
7、vent(Eventevt){switch(evt.id){caseEvent.MOUSE_MOVE:returnmouseMove(evt,evt.x,evt.y);caseEvent.MOUSE_DRAG:returnmouseDrag(evt,evt.x,evt.y);caseEvent.WINDOW_DESTROY:hide();dispose();System.exit(0);returntrue;}returnsuper.handl
此文档下载收益归作者所有