您好,欢迎访问三七文档
第12章事件处理中国矿大计算机学院杨东平jsxhbc@163.comjsxhbc@163.comJava语言与网络编程1第12章事件处理本章讲述的主要内容如下:基于委托的事件处理模型;常用的组件事件处理;鼠标事件和键盘事件处理;事件处理中的Adapter类和内隐类;综合举例。jsxhbc@163.comJava语言与网络编程2委托事件处理模型事件处理由三个组成部分:事件源、事件对象和事件监听者;Java2的委托事件处理模型思想:每个事件源可以发出若干种不同类型的事件。为每个事件源指定一个或多个事件监听者,它可以对某种事件进行监听。如果发生某种事件,就调用相应监听者中的方法。jsxhbc@163.comJava语言与网络编程3委托事件处理模型(续)程序员的工作:注册监听者和实现事件处理方法。注册监听者采用addXXXListener()方法实现,例如:A.addXXXListener(B);当A发生XXX事件时,对象B能得到通知,并将调用相应的方法处理该事件。jsxhbc@163.comJava语言与网络编程4JButton事件处理当用户点击JButton对象时,仅产生一种ActionEvent事件。ActionListener接口仅有一个方法,它的定义是publicinterfaceActionListenerextendsEventListener{publicvoidactionPerformed(ActionEvente);}JButton事件处理(续)例12-1源程序运行jsxhbc@163.comJava语言与网络编程6JTextField和JPasswordField事件处理若在文本行中输入数据并按下回车键,将触发一个事件。如果程序注册了一个事件监听者,那么监听者就可以处理这个事件,并可以使用此时输入的文本数据;当有多个事件源时,使用getSource()方法来确定用户交互的对象。例12-2:源程序运行jsxhbc@163.comJava语言与网络编程7JCheckBox和JRadioButton事件处理JCheckBox对象支持复选框,JRadioButton支持单选,并且与ButtonGroup类配合使用;编程中必须实现接口ItemListener,并编写ItemStateChanged()方法,才能处理这两种类型的事件。例12-3:源程序运行jsxhbc@163.comJava语言与网络编程8注意不能采用add()方法将ButtonGroup对象加入到容器中,否则会出现语法错误。ButtonGroup对象不是一个可显示的组件,它不会产生任何事件,不需要对其进行事件处理。jsxhbc@163.comJava语言与网络编程9JComboBox事件处理JComboBox对应于下拉列表组件;当在下拉列表中选择或输入可编辑的选项时,将触发ItemListener事件;监听者将调用itemStateChanged()方法进行事件处理。例12-4:JComboBox的事件处理。源程序运行jsxhbc@163.comJava语言与网络编程10JList事件处理JList组件在缺省方式下支持多选,并且必须放在JScrollPane中才具有滚动功能。例12-5:JList的事件处理。源程序运行jsxhbc@163.comJava语言与网络编程11注意ListSelectionModel类包含三个常量:(1)SINGLE_SELECTION:仅允许选择列表中一条;(2)SINGLE_INTERVAL_SELECTION:允许选择列表中多条,并且这些条目必须是连续的,中间不能断开;(3)MULTIPLE_INTERVAL_SELECTION:允许选择列表中多条,条目可以不连续。jsxhbc@163.comJava语言与网络编程12鼠标事件处理MouseListener接口专门处理基本鼠标事件:publicinterfaceMouseListenerextendsEventListener{publicvoidmouseClicked(MouseEvente);publicvoidmouseEntered(MouseEvente);publicvoidmouseExited(MouseEvente);publicvoidmousePressed(MouseEvente);//在组件上点击鼠标publicvoidmouseReleased(MouseEvente);//释放鼠标按键}jsxhbc@163.comJava语言与网络编程13鼠标事件处理(续)MouseMotionListener接口处理鼠标移动事件:publicinterfaceMouseMotionListenerextendsEventListener{publicvoidmouseDragged(MouseEvente);//按下键后拖动鼠标publicvoidmouseMoved(MouseEvente);//移动鼠标}jsxhbc@163.comJava语言与网络编程14鼠标事件处理(续)MouseEvent类提供的鼠标事件常量:MOUSE_CLICKED:鼠标点击事件。MOUSE_DRAGGED:鼠标拖动事件MOUSE_ENTERED:鼠标进入事件MOUSE_EXITED:鼠标离开事件MOUSE_MOVED:鼠标移动事件MOUSE_PRESSED:鼠标按钮按下事件MOUSE_RELEASED:鼠标按钮释放事件jsxhbc@163.comJava语言与网络编程15鼠标事件处理(续)MouseEvent类提供的常用方法:publicintgetClickCount()获取鼠标点击的次数publicPointgetPoint()返回一个Point对象,包含了鼠标事件发生的坐标。publicintgetX()鼠标事件发生的X坐标。publicintgetY()publicStringparamString()返回事件的字符串表示例12-6:采用鼠标写字和画画。源程序运行jsxhbc@163.comJava语言与网络编程16Adapter类Adapter类又称适配器类,在定义一个内部类或匿名类时,采用这种类可以对接口MouseListener或MouseMotionListener中的不需要的方法,不写出代码;只有几个接口可以定义Adapter类,表12-1给出了接口和相应的Adapter类名称:jsxhbc@163.comJava语言与网络编程17Adapter类(续)Adapter类的名称实现接口的名称ComponentAdapterComponentListenerContainerAdapterContainerListenerFocusAdapterFocusListenerKeyAdapterKeyListenerMouseAdapterMouseListenerMouseMotionAdapterMouseMotionListenerWindowAdapterWindowListenerjsxhbc@163.comJava语言与网络编程18Adapter类(续)Adapter类的名称是固定的,不可随意创造。程序12-6中的匿名类,改写成Adapter类:addMouseMotionListener(newMouseMotionAdapter(){publicvoidmouseDragged(MouseEvente){xValue=e.getX();yValue=e.getY();repaint();}});注意名称jsxhbc@163.comJava语言与网络编程19键盘事件处理键盘事件处理的接口是KeyListener,它包含三个抽象的方法。凡是实现KeyListener接口的类,都必须对这三个方法做出实现。publicinterfaceKeyListenerextendsEventListener{publicvoidkeyPressed(KeyEvente);//当键被按下publicvoidkeyReleased(KeyEvente);//当键被松开publicvoidkeyTyped(KeyEvente);//当键被按下}jsxhbc@163.comJava语言与网络编程20键盘事件处理(续)KeyEvent类包含的常用方法如下:(1)publicchargetKeyChar()取得字符(2)publicintgetKeyCode()取得键码(3)publicstaticStringgetKeyModifiersText(intmodifiers)将描述修饰符的文本变成字符串(4)publicstaticStringgetKeyText(intkeyCode)将键码变成描述键的文本(5)publicbooleanisActionKey()检查是否属于操作键(6)publicStringparamString()返回事件的字符串表示jsxhbc@163.comJava语言与网络编程21键盘事件处理(续)例12-7:键盘事件处理源程序运行jsxhbc@163.comJava语言与网络编程22事件处理综合应用举例(1)舞动的字符(略):自己阅读理解;jsxhbc@163.comJava语言与网络编程23事件处理综合应用举例(续)(2)播放声音剪辑:最简单的方法是调用AutoClip接口中的play()方法:publicvoidplay(URLurl,Stringname)publicvoidplay(URLurl)目前播放的声音剪辑文件,从扩展名看有:.au、.wav、.aif、.aiff、.mid和.rmijsxhbc@163.comJava语言与网络编程24事件处理综合应用举例(续)AutoClip接口中有三个方法:play()、loop()和stop()用于播放控制。play()将声音剪辑播放一次;loop()循环播放声音剪辑;stop()终止播放;例12-9综合了容器、组件、事件处理和播放声音剪辑等多种实现技术。源程序HTML程序执行jsxhbc@163.comJava语言与网络编程25事件处理综合应用举例(续)网络浏览器:程序不但综合了文本区和事件处理,并且还应用了Java2提供的超级链接HyperLinkListener接口。例12-10:源程序运行
本文标题:第12章 事件处理
链接地址:https://www.777doc.com/doc-3956602 .html