欢迎来到天天文库
浏览记录
ID:41233169
大小:892.00 KB
页数:79页
时间:2019-08-20
《java程序设计之事件处理》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十三章事件处理吴冬芹yzwudongqin@aliyun.com金陵学院信息科学与工程学院12主要内容一、委托事件模型二、Java语言的事件类与适配器类三、组件及相应的事件处理四、重要的界面设计五、定时器2委托事件模型事件处理:为组件设计相应的程序,使组件能够响应并处理用户的操作。Java程序一旦构建完GUI,就不再工作,而是等待用户通过鼠标、键盘给它通知(消息驱动),它再根据这个通知的内容进行相应的处理(事件驱动)。通常一个键盘或鼠标操作会引发一个系统预先定义好的事件,用户只需编写代码,定义每个特定事件发生时程序应做出何种响应即可。消息处理和事件驱动是面向对象
2、编程技术的主要特点。3委托事件模型事件(event)用户使用鼠标或键盘对窗口中的组件进行交互时所发生的事情。对这些事件做出响应的程序,称为事件处理程序(EventHandler)。事件源(eventsource)能够产生事件的对象。如按钮、鼠标、文本框、键盘等事件监听者(listener)监听者有专门的方法来处理事件,事件监听者是一个对事件源进行监视的对象,当事件源上发生事件时,事件监听者能够监听到,并调用相应的方法对发生的事件做出相应的处理。4委托事件模型事件处理程序Java语言中包含了许多用来处理事件的接口和类。用于事件处理的方法就声明在这些类或接口中。这些包
3、含有事件处理方法的接口称为监听者接口,包含有事件处理方法的类称为适配器类。监听者负责处理事件源发生的事件,为了处理事件源发生的事件,监听者会自动调用一个方法来处理事件。这些处理事件的方法就是事件处理程序。5委托事件模型Java语言规定为了让监听者能对事件源发生的事件进行处理,创建该监听者对象的类必须声明实现相应的监听者接口或继承相应的适配类即必须在类体中具体定义该接口中所有方法的方法体或覆盖适配器类中的相应方法,以供监听者自动调用相应事件处理方法来完成对应事件的任务,这些处理事件的方法就是事件处理程序。6委托事件模型委托事件模型:是将事件源(如命令按钮)和对事件做
4、出的具体处理(利用监听者实例来对事件进行具体的处理)分离开来。一般情况下,组件(事件源)不处理自己的事件,而是将事件处理委托给外部的处理实体(监听者)。当事件发生时,产生事件的对象即事件源,会把此“信息”转给事件监听者处理的一种方式,而这里所指的“信息”事实上就是java.awt.event事件类库里某个类所创建的对象,我们把它称为“事件对象”(Eventobject)。事件对象表示事件的内容,对象内部封装了一个对事件源eveutSource的引用和其他信息。7委托事件模型委托事件模型的工作原理:8委托事件模型委托事件模型的工作原理:拟人法:监听者—老板组件—工人
5、注册—老板向工人宣布“我是你的管理者,有事向我报告”事件发生—向老板报告事件处理者—老板选派人去完成任务9委托事件模型谁来充当监听者?(1)让包含“事件源”的对象来担任监听者例题:在一个窗口中摆放两个组件,一个命令按钮,一个文本区。当单击命令按钮后,将文本区中的字体颜色设置为红色。为组件增加事件监听者的方法:由于每一个事件类型都有一个相应的监听者接口,通常名为XXXListener,其中XXX代表它所处理的事件类型。在定义类时要实现该接口。监听者有专门的方法用于处理事件,具体在哪个组件上发生事件后由哪个监听者处理,必须事前用“组件名.addXXXLister()”
6、进行注册。10importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassApp13_1extendsJFrameimplementsActionListener{staticApp13_1frm=newApp13_1();staticJButtonbt=newJButton("设置字体颜色");staticJTextAreata=newJTextArea("字体颜色",5,20);publicstaticvoidmain(String[]args){bt.addActionList
7、ener(frm);//把监听者frm向事件源bt注册frm.setTitle("操作事件");frm.setLayout(newFlowLayout());frm.setSize(260,170);frm.add(ta);frm.add(bt);frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frm.setVisible(true);}publicvoidactionPerformed(ActionEvente)//单击按钮bt事件发生时的处理操作{ta.setForeground(Color.RED);//
8、把文本区内
此文档下载收益归作者所有