教学课件第十章 事件处理.ppt
《教学课件第十章 事件处理.ppt》由会员分享,可在线阅读,更多相关《教学课件第十章 事件处理.ppt(49页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、PPT模板下载:/moban/ 行业PPT模板:/hangye/ 节日PPT模板:/jieri/ PPT素材下载:/sucai/PPT背景图片:/beijing/ PPT图表下载:/tubiao/ 优秀PPT下载:/xiazai/ PPT教程: /powerpoint/ Word教程: /word/ Excel教程:/excel/ 资料下载:/ziliao/ PPT课件下载:/kejian/ 范文下载:/fanwen/ 试卷下载:/shiti/ 教案下载:/jiaoan/ 字体下载:/ziti/ 教学课件第十章 事件处理LOGO Company Logo10.1事件处理示例10.2310.3事
2、件处理(Event Handle)概述事件适配器(Event Adapter)Company Logo10.1 10.1 事件处理(事件处理(Event HandleEvent Handle)概述)概述10.1.1 Java基于委托的事件处理模型10.1.2 事件处理及相关概念10.1.3 Java的事件处理类10.1.4 Java的事件及其监听器接口10.1 10.1 事件处理事件处理(Event HandleEvent Handle)概述)概述Company Logo10.2 事件处理示例10.2.1 动作事件与项目事件动作事件与项目事件10.2.2 文本事件文本事件10.2.3 键盘事件
3、键盘事件10.2.4 鼠标事件鼠标事件10.2.5 窗口事件窗口事件10.2 事件处理示例Company LogoAdd your textAdd your textAdd your textAdd your textAdd your Company Logo10.1 事件处理(Event Handle)概述如果想要实现用户与组件的交互,就必须使用事件处理。例如,我们用鼠标点击按钮,希望界面会得到一定的反应。在这个过程中,用户在按钮上单击鼠标,按钮组件接收鼠标动作并对用户的动作做出响应,触发组件的鼠标单击事件,事件在对象间的传递是则是以消息(Message)进行传输。相比VB这样的编程语言来说
4、,Java的事件处理在功能上要更底层,因此语法上可能显得“繁琐”一些。Company Logo10.1.1 Java基于委托的事件处理模型基于委托的事件处理模型 Java在事件处理的过程中,是围绕着一个称为“监听器”(Listener)的对象来进行的,事件的接收、判断和处理都是委托“监听器”来全权完成,这称为“基于委托的事件处理模型”(Delegation Event Model)。 Java的事件处理过程是这样的:程序中使用“监听器”对想要接收事件的组件进行监视,当用户动作触发事件时,“监听器”会接收到它所监听组件上的事件,然后根据事件类型,自行决定该使用什么方法来处理。在整个事件处理过程中
5、,“监听器”都是关键的核心。Company LogoHot Tip 事件处理及相关概念大致有:事件、事件接口、监听器、注册(添加)监听器、事件类、事件接口中的方法、事件类的方法。 事件是组件对用户的动作的响应。而响应用户动作并产生事件的组件就是事件源。如果组件有监听器监听,组件产生的事件就会以消息的形式传递给监听器。监听器根据监听到的事件类型,调用相应的方法去执行用户的需求。而事件类和事件类的方法的应用则在事件接口方法中体现。 第9章示例9-9就是一个事件处理的例子,如果现在还对以上这些概念感到模糊,我们再看一个简单的事件处理的例子,通过这个示例来了解一下事件处理的相关概念。这个示例包含一个按
6、钮和一个文本框,当单击按钮时,文本框显示“大家好!”。例例10-110-1:简单的事件处理示例Company LogoHot Tip行号行号EventHandle.javaEventHandle.java程序代码程序代码1import java.awt.*;import java.awt.event.*; /导入事件处理类所在的类包/类EventHandle实现了事件监听器接口public class EventHandle extends Frame implements ActionListener TextField t1=new TextField(20);Button b1=new
7、Button(登录); public EventHandle(String title) super(title); this.setLayout(new FlowLayout(); this.add(t1); this.add(b1); b1.addActionListener(this); /为按钮b1注册监听器this this.setSize(200,90); this.setVisible(true); public void actionPerformed(ActionEvent e) /实现接口里的方法 if(e.getSource()=b1) /判断事件源是否是按钮b1 t1.
8、setText(大家好!); public static void main(String args) new EventHandle(事件处理简单示例); Company LogoHot Tip【运行结果运行结果】 (显示如图所示的窗口,当单击“登录”按钮时,文本框显示字符串“大家好!”。) 【代码说明】通过这个示例,我们理清一下事件处理的全过程,与事件处理的相关步骤在程序清单中已经标记出来,分别是代码第2、3、13、17、19行;因此事件处理的步骤可以总结如下:代码第2行,导入事件处理类所在的类包event包,ActionListener接口和ActionEvent类都在这个包中。因为导入
9、java.awt.*;并不会导入awt包下面的event子包的内容,所以此句是必须的;代码第3行,实现了ActionListener接口,这个接口包含一个actionPerformed (ActionEvent e)方法,因此在代码第17行重写了这个方法, actionPerformed方法可以处理动作事件(ActionEvent);代码第13行,为了让按钮b1能响应用户的动作,为b1注册了监听器this;代码第17行,重写的方法actionPerformed (ActionEvent e)格式必须是public(公有的)、void(无返回值),它有一个ActionEvent类型的参数,用以接
10、收动作事件的信息,并存放在对象e中;代码第19行,ActionEvent类型的对象e调用getSource(),会获得事件源对象,借此判断用户触发的是否是按钮b1,用户希望程序实现的功能代码应写在此方法内;Company Logo图10-1画出了Java基于委托的事件处理模型流程。 图10-1 Java基于委托的事件处理机制下面我们把例10-1涉及的相关概念再对比列出,参照图10-1彻底掌握这些概念Company LogoHot Tip概念概念相应代码段相应代码段事件监听器接口ActionListener事件源b1监听器this注册监听器addActionListener(this);监听器接
11、口中的方法actionPerformed()事件类ActionEvent事件类的方法getSource()表10-1 事件相关概念对照1) 既然“监听器”是如此重要,那么什么样的对象有资格做“监听器”呢?;从Java事件处理流程上看,用户对组件的动作在组件(事件源)上会产生事件,事件由监听器接收,并分析事件类型,然后根据事件类型,将事件转交指定的接口方法处理。因此做为监听器的对象必须了解事件监听接口的内容,也就是说“监听器”对象的类需要实现指定的事件监听接口。本例中的监听器this是类EventHandle的实例,类EventHandle实现了事件监听接口ActionListener,因此th
12、is可以做为监视Action事件的监听器使用。2) 一个监听器可以监听多个事件源,一个事件源也可以注册多个监听器(当然有时无此必要)。注册监听器时使用addXXXlistener()方法,删除时则使用removeXXXlistener()方法(例如删除动作事件监听器可以使用removeActionlistener方法);Company Logo10.1.3 Java的事件处理类的事件处理类 Java的事件一般包括两种类型:用户事件和系统事件。l 用户事件:由用户动作引发的事件。例如,用户操作鼠标,按下键盘键等;l 系统事件:由操作系统发出的事件。例如,窗口状态变化时自动刷新窗口内容等。这里我们
13、只探讨用户事件。 AWT组件事件都是由java.awt.AWTEvent类派生得到,它也是EventObject类的子类。AWT事件共有12种类型,如图10-2所示图10-2 AWT包的事件处理类层次Company Logo10.1.4Java的事件及其监听器接口的事件及其监听器接口AWT事件类共有10类,相应监听器接口共有11个。它们的对应关系及功能如表10-2。事件类别事件类别功能描述功能描述接口名接口名接口中方法接口中方法ActionEvent动作事件ActionListeneractionPerformed(ActionEvnet e)TextEvent文本事件TextListener
14、textValueChanged(TextEvent e)AdjustementEvent调整事件AdjustmentListeneradjustmentValueChanged(AdjustmentEvent e)ItemEvent项目事件ItemListeneritemStateChanged(ItemEvent e)FocusEvent焦点事件FocusListenerfocusGained(FocusEvent e)focusLost(FocusEvent e)ContainerEvent容器事件ContainerListenercomponentAdded(ContainerEven
15、t e)componentRemoved(ContainerEvent e)ComponentEvent组件事件ComponentListenercomponentHidden(ComponentEvent e)componentMoved(ComponentEvent e)componentResized(ComponentEvent e)componentShown(ComponentEvent e)WindowEvent窗口事件WindowListenerwindowActived(WindowEvent e)windowClosed(WindowEvent e)windowClosin
16、g(WindowEvent e)windowDectivated(WindowEvent e)windowDeiconified(WindowEvent e)windowIconfied(WindowEvent e)windowOpened(WindwEvent e)MouseEvent鼠标事件MouseListenermouseClicked(MouseEvent e)mouseEntered(MouseEvent e)mouseExited(MouseEvent e)mousePressed(MouseEvent e)mouseReleased(MouseEvent e)Company L
17、ogoHot Tip事件类的方法:包括从父类AWTEvent类中继承的方法和事件类本身特有的方法。l从java.awt.AWTEvent类中继承的方法主要有:getSource(),getID(),toString();事件类特有的方法:根据组件特点及其事件类功能不同,方法有所不同,如ActionEvent类具有getActionCommand()方法,AdjustementEvent类具有getValue(),getAdjustmentType()方法等;部分事件类的常用方法功能简要描述如表10-3事件类事件类可产生事件的组件可产生事件的组件事件类的方法事件类的方法方法功能描述方法功能描述A
18、ctionEventButton,List,MenuItem,TextField等getActionCommand()返回与此动作相关的命令字符串。TextEventTextArea,TextFieldparamString()返回标识此文本事件的参数字符串。AdjustmentEventScrollbargetValue()getAdjustmentType()返回调整事件中的当前值。返回导致值更改的调整类型。ItemEventList,Choice,Checkbox,CheckboxMenuItemgetItem()getStateChange()返回受事件影响的项。返回状态更改的类型(选
19、中或取消)。MouseEvent大部分组件getClickCount()getPoint()getX()getY()返回鼠标单击次数。返回鼠标事件相对于源组件的 x、y 位置。返回鼠标事件相对于源组件的水平 x 坐标。返回鼠标事件相对于源组件的垂直 y 坐标。KeyEvent大部分组件getKeyChar()getKeyCode()返回与按键相关联的字符。返回与按键相关联的键整数值。表10-3 部分事件类的常用方法Company LogoHot Tip事件类的静态整形成员属性:每种事件类都有一些从父类AWTEvent类中继承下来的或是本身特有的静态整形成员属性,主要是一些描述当前组件的状态的值
20、,如KeyEvent. .VK_LEFT属性代表键盘“左箭头键”。部分成员属性会在后面的“事件处理示例”一节中提及。由于篇幅原因,本书不作详细描述,请读者自行参考JDK API Document。Company Logo10.2.1 动作事件与项目事件动作事件与项目事件动作事件(ActionEvent)是由用户动作造成组件的动作(比如按下按钮)产生的,(注意:要使用键盘在Button组件上触发ActionEvent,需使用空格键)。项目事件(ItemEvent)是由用户在具备项目选择能力的组件(比如列表框,选择框等)上触发。例10-2:ActionEvent与ItemEvent示例(要求:从列
21、表框中选择项目,单击按钮时,选中的项目显示在文本框中)其中ActionEvent由ActionListener接口的actionPerformed()方法处理;ItemEvent由ItemListener接口的itemStateChanged()方法处理。 Company LCompany LCompany Logo【运行结果】(显示如图1所示的窗口,当选择列表框中的爱好时,文本框显示你选择的爱好的个数。) (当单击“显示”按钮时,显示如图2所示的窗口,文本框显示你选择的爱好。)Company Logo【代码说明】1)本类实现了两个接口ActionListener,ItemListener,分
22、别用以处理按钮和文本框产生的事件,如代码第4行。代码第28、41行分别重写了这两个接口的方法actionPerformed()和itemStateChanged();2)代码第7行,使用了List(4,true);构造列表框,true参数代表此列表框可以多选;3)代码第28行,重写方法actionPerformed()。代码第32行,列表框实例list调用getSelectedItems()方法获得所有在列表框中选择的项目,将它们存储在字符串数组str中。代码第35、36行,将数组的内容添加连接到字符串str_show;4)代码第41行,重写方法itemStateChanged()。代码第43
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件第十章 事件处理 教学 课件 第十 事件 处理
限制150内