您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 14第14章 事件驱动程序
1第14章事件驱动程序第III篇的必备基础第11章图形界面程序编程第8章继承和多态第13章创建图形用户界面第14章Applets,图像和音频第9章抽象类和接口第12章事件驱动程序-2主要内容理解事件的处理机制1编写程序处理事件2拓展:事件的四种实现方式3案例:简单计算器的编写43事件的产生器描述发生了什么的对象.事件处理的执行者事件事件源监听器Java事件处理机制谁?发生了什么?怎么处理?4Java事件处理机制:实例问题:在窗口中显示两个按钮ok和cancel,并在控制台上显示信息:当点击ok按钮时,输出信息为:okbuttonisclicked.当点击cancel按钮时,输出信息为:cancelbuttonisclicked.5事件处理机制-委托机制+addXlistener(listener:XListener)()source:SourceClasslistener:ListenerClassListenerhandler(XEventevent)触发事件event:XEvent调用源对象的注册方法source.addXListener(listener)保存在列表中listener1listener2listenern……调用Listener1.handler(event)Listener2.handler(event)Listener3.handler(event)源组件监听器事件6Example14.1处理简单的行为事件问题:在窗口中显示两个按钮ok和cancel,并在控制台上显示信息.TestActionEventRun7事件源(组件)在其上触发或发生事件的组件称为源组件或源对象按钮是点击按钮行为事件的源组件。创建源组件:JButtonjbtOK=newJButton(OK);JButtonjbtCancel=newJButton(Cancel);8用户行为、源对象和事件类型用户行为源对象事件类型点击按钮JButtonActionEvent点击复选框JCheckBoxItemEvent,ActionEvent点击单选按钮JRadioButtonItemEvent,ActionEvent在文本框中按下回车JTextFieldActionEvent选定一个新项JComboBoxItemEvent,ActionEvent窗口打开、关闭等WindowWindowEvent鼠标事件ComponentMouseEvent键盘事件ComponentKeyEvent9事件事件可以定义为程序发生了某些事情的信号。外部用户行为,如移动鼠标、点击鼠标按钮和按下键盘等,都可以引发事件。操作系统,如时钟等,也可以引发事件。10Event类AWTEventEventObjectAdjustmentEventComponentEventTextEventItemEventActionEventInputEventWindowEventMouseEventKeyEventContainerEventFocusEventPaintEvent11监听器处理该事件的对象称为监听器。监听器必须是一个监听器接口的实例.监听器必须要用源组件注册.12事件、事件监听器和监听器方法事件类监听器接口监听器方法(处理器)ActionEventActionListeneractionPerformed(ActionEvent)ItemEventItemListeneritemStateChanged(ItemEvent)MouseEventMouseListenermousePressed(MouseEvent)mouseReleased(MouseEvent)mouseExited(MouseEvent)mouseClicked(MouseEvent)mouseEntered(MouseEvent)KeyEventKeyListenerkeyPressed(KeyEvent)keyReleased(KeyEvent)keyTypeed(KeyEvent)13监听器classButtonListenerimplementsActionListener{publicvoidactionPerformed(ActionEvente){}}实现ActionListenerSystem.out.println(The+e.getActionCommand()+buttonis+clicked.);14对象注册示例ButtonListenerlistener=newButtonListener();JButtonjbtOK=newJButton(OK);jbtOK.addActionListener(listener);+addXlistener(listener:XListener)()source:SourceClasslistener:ButtonListener调用源对象的注册方法source.addXListener(listener)15java.awt.event.ActionEventjava.awt.event.ActionEvent+getActionCommand():String+getModifier():int+getWhen():long返回与这个行为有关的命令字符串,如按钮显示的文本返回这一行为事件期间被按下的控制键返回这个事件发生的时间戳,从1970年1月1日计算的毫秒数java.util.EventObject+getSource():Object返回最初发生该事件的对象java.awt.event.AWTEvent16Example14.2处理窗口事件TestWindowEventRun问题:编写一个程序演示如何处理窗口事件。窗口事件包括:windowopened,closing,closed,activated,deactivated,iconified,anddeiconified.17Example14.3单个源对象多个监听器TestMultipleListenerRun问题:修改例12.1,为OKandCancel增加一个新的监听器.18思考:委托机制的优点源组件1源组件2监听器1监听器2监听器319鼠标事件java.awt.event.MouseEvent+getButton():int+getClickCount():int+getPoint():java.awt.Point+getX():int+getY():intjava.awt.event.InputEvent+getWhen():long+isAltDown():boolean+isControlDown():boolean+isMetaDown():boolean+isShiftDown():boolean20处理鼠标事件Java提供了2个处理鼠标事件的监听接口,MouseListenerandMouseMotionListener.MouseListener接口,可以监听鼠标的按下、释放、移入、移出或点击行为。MouseMotionListener接口,可以监听鼠标的拖动和移动等行为。21处理鼠标事件java.awt.event.MouseListener+mousePressed(e:MouseEvent):void+mouseReleased(e:MouseEvent):void+mouseClicked(e:MouseEvent):void+mouseEntered(e:MouseEvent):void+mouseExited(e:MouseEvent):voidjava.awt.event.MouseMotionListener+mouseDragged(e:MouseEvent):void+mouseMoved(e:MouseEvent):void22Example14.4使用鼠标在面板上移动信息问题:使用鼠标在面板上移动信息。拖动鼠标时信息也随之移动,信息总是显示在鼠标指针处。MoveMessageDemoRun23Example14.5使用鼠标写画问题:编写一个可以用鼠标写涂画的程序。左键可以画,右键可以擦除。ScribbleDemoRun24处理键盘事件keyPressed(KeyEvente)按下一个键.keyReleased(KeyEvente)松开一个键.keyTyped(KeyEvente)打一个统一码字符键通过键盘事件,可以通过键来控制和执行一些操作。KeyListener接口:25KeyEvent类方法:getKeyChar()getKeyCode()Keys:HomeVK_HOMEEndVK_EndPageUpVK_PGUPPageDownVK_PGDNetc...26KeyEvent类java.awt.event.KeyEvent+getKeyChar():char+getKeyCode():int返回这个事件中该键对应的字符返回这个事件中该键对应的键编码整数java.awt.event.InputEvent27Example14.6处理键盘事件问题:显示用户输入的字符。用户可以用箭头键移动字符。KeyboardEventDemoRun28时钟类Timer并非所有的源对象都是GUI组件.定时器类javax.swing.Timer就是一个按照预定频率触发ActionEvent事件的源组件.Optionaljavax.swing.Timer+Timer(delay:int,listener:ActionListener)+addActionListener(listener:ActionListener):void+start():void+stop():void+setDelay(delay:int):voidCreatesaTimerwithaspecifieddelayinmillisecondsandanActionListener.AddsanActionListenertothetimer.Startsthistimer.Stopsthistimer.Setsanewdelayvalueforthistimer.Timer类可以用于控制动画。例如,可以用它显示一条移动的信息。AnimationDemoRun29时钟动画在11.12节中,绘制了一个静止的时钟。如何让它走动?可以使用定时器控制时钟的重画。ClockAnimationRun30扩展:Java事件监听器的四种实现方式自身类作为事件监听器外部类作为事件监听器匿名内部类作为事件监听器内部类作为事件监听器自身类外部类匿名内部类内部类31总结:Java事件处理创建事件源(先GUI);根据事件源产生的事件,创建相对应事件的事件监听器;将事件监听器注册到事件源上;
本文标题:14第14章 事件驱动程序
链接地址:https://www.777doc.com/doc-3194630 .html