JAVA事件处理机制课件

上传人:新** 文档编号:593463638 上传时间:2024-09-25 格式:PPT 页数:27 大小:211KB
返回 下载 相关 举报
JAVA事件处理机制课件_第1页
第1页 / 共27页
JAVA事件处理机制课件_第2页
第2页 / 共27页
JAVA事件处理机制课件_第3页
第3页 / 共27页
JAVA事件处理机制课件_第4页
第4页 / 共27页
JAVA事件处理机制课件_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《JAVA事件处理机制课件》由会员分享,可在线阅读,更多相关《JAVA事件处理机制课件(27页珍藏版)》请在金锄头文库上搜索。

1、第15讲 JAVA事件处理机制本讲内容o事件n事件的概念与事件对象n事件源n事件类型o事件处理机制n事件处理器(事件处理方法)n事件监听器接口与事件监听器类n事件监听器适配器1JAVA事件处理机制GUI的设计步骤o建立用户界面n设计一个顶层容器对象,如JFramen确定布局,增加组件n改变组件颜色、字体o增加事件处理n编写事件监听器类(内含事件处理方法)n在事件源上注册事件监听器对象o显示用户界面2JAVA事件处理机制事件处理机制的几个重要概念o事件n事件是用户在界面上的一个操作(通常使用各种输入设备,如:鼠标、键盘等来完成)。n当一个事件发生时,该事件用一个事件对象来表示。事件对象有对应的事

2、件类。不同的事件类描述不同类型的用户动作。事件类包含在java.awt.event和javax.swing.event包中。o事件源n产生事件的组件叫事件源。在一个按钮上单击鼠标时,该按钮就是事件源,会产生一个ActionEvent类型的事件。3JAVA事件处理机制事件处理机制的几个重要概念o事件处理器(事件处理方法)n事件处理器是一个接收事件对象并进行相应处理的方法。事件处理器包含在一个类中,这个类的对象负责检查事件是否发生,若发生就激活事件处理器进行处理。4JAVA事件处理机制事件处理机制的几个重要概念o事件监听器类n包含事件处理器,并负责检查事件是否发生,若发生就激活事件处理器进行处理的

3、类叫做事件监听器类。其实例就是事件监听器对象。事件监听器类必须实现事件监听器接口或继承事件监听器适配器类。n事件监听器接口定义了处理事件必须实现的方法。事件监听器适配器类是对事件监听器接口的简单实现。目的是为了减少编程的工作量。n事件监听器接口和事件监听器适配器类也都包含在java.awt.event和javax.swing.event包中。5JAVA事件处理机制事件处理机制的几个重要概念o注册事件监听器n为了能够让事件监听器检查某个组件(事件源)是否发生了某些事件,并且在发生时激活事件处理器进行相应的处理,必须在事件源上注册事件监听器。这是通过使用事件源组件的以下方法来完成的:addXxxL

4、istener(事件监听器对象)Xxx对应相应的事件类。6JAVA事件处理机制事件处理机制-委托事件处理图形界面程序(一个类)监听器类(含事件处理器)监听器对象(含事件处理器)实例化注册外部动作事件对象产生并传递事件对象接收事件对象,激活事件处理器,实现预定功能事件源(例如一个按钮)含有7JAVA事件处理机制事件处理实例:关闭窗口图形界面程序(TestFrame)窗口监听器类MyWindowListener(含关闭窗口事件处理器)窗口监听器对象(含关闭窗口事件处理器)实例化注册单击关闭按钮事件对象 e产生并传递窗口事件对象WindowEvente接收事件对象e,激活事件处理器,实现关闭窗口功能

5、。事件源窗口对象fr含有8JAVA事件处理机制在重复一遍GUI的设计步骤o建立用户界面n设计一个顶层容器对象,如JFramen确定布局,增加组件n改变组件颜色、字体o增加事件处理n编写事件监听器类(内含事件处理方法)n在事件源上注册事件监听器对象o显示用户界面9JAVA事件处理机制监听器类-MyWindowListener.javaimport java.awt.event.WindowListener;import java.awt.event.WindowEvent;public class MyWindowListener implements WindowListener public

6、 void windowClosing(WindowEvent e) /事件处理器 e.getWindow().setVisible(false);e.getWindow().dispose();System.exit(0); 10JAVA事件处理机制图形界面程序-TestFrame.javaimport java.awt.*;public class TestFramepublic static void main(String args)Frame fr=new Frame(“事件处理实例); fr.setSize(500,500); /设置窗口的大小fr.setBackground(Co

7、lor.green); / 设置窗口背景颜色 /注册事件监听器对象,Frame组件对象fr为事件源 fr.addWindowListener(new MyWindowListener();fr.setVisible(true); /显示窗口11JAVA事件处理机制再论事件处理机制o事件、事件监听器接口、事件监听器类:n每一类事件有一个相应的事件监听器接口,该接口定义了接收和处理事件的抽象方法。实现该接口的类,就是监听器类。其对象可作为监听器对象向相应的组件注册。n事件的类名通常为:XxxEventn对应的事件监听器接口名通常为:XxxListenern一个监听器接口定义了一种以上的抽象事件处理

8、方法(事件处理器)。n事件监听器类实现事件监听器接口,其类名可以由我们自己取。事件监听器类需要我们自己编写。o一个组件可以注册一个或多个监听器对象,事件对象只向已注册的监听器对象报告事件的发生。12JAVA事件处理机制事件监听器类的编写要点事件监听器类应该包括以下两部分内容:事件监听器类应该包括以下两部分内容:1.在事件监听器类的声明中指定要实现的监听器接口名,如:在事件监听器类的声明中指定要实现的监听器接口名,如:public class MyListener implements XxxListener 2.实现监听器接口中的事件处理方法,如:实现监听器接口中的事件处理方法,如:publi

9、c void 事件处理方法名事件处理方法名(XxxEvent e) ./处理某个事件的代码处理某个事件的代码. 然后,在一个或多个组件上可以进行监听器类的实例的注册。如:然后,在一个或多个组件上可以进行监听器类的实例的注册。如:组件对象组件对象.addXxxListener(MyListener对象对象); 13JAVA事件处理机制事件监听器类实例import java awt.event.* ;public class ButtonHandler implements ActionListener public void actionPerformed(ActionEvent e) Syst

10、em.out.println(“Action occurred”);System.out.println(“Buttons label is:”+e.getActionCommand(); 14JAVA事件处理机制使用事件监听器类import java.awt.*;public class TestButton public static void main(String args ) Frame f = new Frame(“Test”);Button b = new Button(“Press Me!”);b.addActionListener(new ButtonHandler( );f

11、.add(b, “Center”);f.pack( );f.setVisible(true) ; 15JAVA事件处理机制事件处理的编程方法总结o要处理某GUI组件(假定为c)上发生的XXXEvent事件,其通用的编程方法是:n编写一个监听器类,该监听器类实现了XXXListener接口,(假定监听器类的类名为MyXXXListener);n在MyXXXListener中的相应事件处理方法中编写事件处理代码(事件处理器)。n调用GUI组件c的addXXXListener()方法注册事件监听器对象。c.addXXXListener(new MyXXXListener();n要处理C上的多种事件,

12、可以编写多个相应的监听器类,进行多次注册。也可以编写一个实现了多个监听器接口的类,进行一次注册。16JAVA事件处理机制图形用户界面编程技巧o通常将图形组件作为类的成员o将事件监听器类写成GUI类的内部类,方便对组件进行访问。17JAVA事件处理机制监听器适配器类oJAVA中提供了大部分监听器接口的适配器类,其目的是简化事件监听器类的编写,监听器适配器类是对事件监听器接口的简单实现(方法体为空),这样用户可以把自己的监听器类声明为适配器类的子类,从而可以不管其他方法,只需重写需要的方法。 对应于监听器接口XxxListener的适配器接口的类名为XxxAdapter。public class

13、MouseClickHandler extends MouseAdapterpublic void mouseClicked(MouseEvent e).例:重写关闭窗口的例子18JAVA事件处理机制事件、接口、适配器与事件处理方法对应表事件、接口、适配器与事件处理方法对应表事件事件监监听器接口听器接口 监监听器适配器听器适配器类类事件事件处处理方法理方法ActionEventActionEvent ActionListenerActionListener 无无actionPerformedactionPerformedAdjustmentEAdjustmentEventventAdjustm

14、entListeAdjustmentListenerner 无无adjustmentValueChangedadjustmentValueChangedComponentEComponentEventvent ComponentListComponentListenerener ComponentAdapterComponentAdapter componentHidden componentHidden componentMoved componentMoved componentResized componentResized componentShowncomponentShownCon

15、tainerEveContainerEventnt ContainerListenContainerListenerer ContainerAdapterContainerAdaptercomponentAddedcomponentAdded componentRemovedcomponentRemoved FocusEventFocusEvent FocusListenerFocusListener FocusAdapterFocusAdapter focusGainedfocusGained focusLostfocusLostItemEventItemEvent ItemListener

16、ItemListener 无无itemStateChangeditemStateChanged 19JAVA事件处理机制事件事件监监听器接口听器接口 监监听器适配器听器适配器类类事件事件处处理方法理方法KeyEventKeyListenerKeyListener KeyAdapter KeyAdapterkeyPressedkeyPressed keyReleasedkeyReleased keyTypedkeyTypedMouseEventMouseListenerMouseListener MouseAdapterMouseAdapter mouseClickedmouseClicked

17、mouseEnteredmouseEntered mouseExitedmouseExited mousePressedmousePressed mouseReleasedmouseReleasedMouseMotionEventMouseMotionListenMouseMotionListenerer MouseMotionAdapter MouseMotionAdaptermouseDraggedmouseDragged mouseMovedmouseMoved TextEventTextListenerTextListener 无无textValueChangedtextValueCh

18、angedWindowEventWindowListenerWindowListener WindowAdapterWindowAdapterwindowActivatedwindowActivated windowClosedwindowClosed windowClosingwindowClosing windowDeactivatedwindowDeactivated windowDeiconifiedwindowDeiconified windowIconifiedwindowIconified windowOpenedwindowOpened事件、接口、适配器与事件处理方法对应表事件

19、、接口、适配器与事件处理方法对应表20JAVA事件处理机制一个监听器实现多个监听器接口一个监听器实现多个监听器接口一个监听器对象注册到多个组件一个监听器对象注册到多个组件21JAVA事件处理机制实例o一个监听器实现多个监听器接口一个监听器实现多个监听器接口o一个监听器对象注册到多个组件一个监听器对象注册到多个组件o实例代码22JAVA事件处理机制实例o在同一个组件上注册多个监听器。o方法是根据需要多次调用addXXXListener() 方法注册多个监听器。o实例代码23JAVA事件处理机制使用内部类进行事件处理(有名内部类)o优点n既可使用Adaptor类,又避免多重继承的限制。n便于访问类

20、中的各种成员。o方法n在一个类中定义内部类,由内部类继承相应Adaptor类。n例public class MyClass extends Applet /MyClass不能再继承MouseAdapter类. someObject.addMouseListener(new MyAdapter(); /注册监听器对象. class MyAdapter extends MouseAdapter /实现监听器的内部类public void mouseClicked(MouseEvent e) ./Event handler implementation goes here. 24JAVA事件处理机制

21、实例o有名内部类代码25JAVA事件处理机制使用内部类进行事件处理(匿名类)o匿名类(Anonymous Class)是没有名字的类。可以使用匿名内部类进行事件处理。o例:public class MyClass extends Applet . someObject.addMouseListener( new MouseAdapter() public void mouseClicked(MouseEvent e) ./事件处理器代码 ); . o实例代码26JAVA事件处理机制习题习题:利用图形界面编写一个简单的文本编辑器,包含一个文本域和一个保存按钮。单击保存按钮将文本域(TextArea)中的内容保存到一个文本文件mytext.txt中。提示:1.使用TextArea的getText()方法可以获得文本域中的内容。2.使用内部类定义事件监听器,实现事件监听器接口ActionListener。3.可使用的Write(String str, int off, int len)方法将内容写入文件。27JAVA事件处理机制

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号