欢迎来到天天文库
浏览记录
ID:42279859
大小:285.51 KB
页数:19页
时间:2019-09-11
《窗口程序的事件机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、窗口程序的事件机制机电工程系裴清福引言在上一章中我们已经了解如何建立一个窗口程序,并且也知道如何在窗口中加入需要的组件。但在窗口执行时,一旦窗口显示在屏幕上,程序的执行焦点就会停驻在窗口组件上,而程序是否要结束?或者要执行改程序的哪些功能?将由用户决定。引言至于改程序的哪个组件提供哪些功能?例如:鼠标在窗口内移动、点击某个组件、或是按下键盘的某个按键,该应用程序要执行的行为,就是事先由程序设计者设计的组件的“事件(Event)”来决定的。所以,接下来的这一章笔者所要介绍的就是Java窗口应用程序的“事件机
2、制”。Java窗口程序的事件机制称为“监听机制”,它的特点是GUI组件本身不直接负责处理起源自它的事件,而是授权给特定的Listener对象(可称之为“事件监听者”)来处理。这个机制的主要范畴包括:“事件源”(EventSource)、“监听能力”(EventListener)和“事件类”(EventClass)。Java事件监听机制事件源“事件源”指的是引发事件的起源,例如:“鼠标移入”(enter)就是MouseListener负责监听的一个“事件源”。常见的事件源包括:按键盘按键、移动鼠标、按鼠标、
3、滚动鼠标滚轮、开关窗体窗口、选择或删除组件上的选项等许多种类。监听能力“监听能力”就是监听事件源的能力,是由XXXListener类来实现。即由XXXListener类来产生被称为“事件监听者”的“Listener对象”,并且授权此“Listener对象”来接受及响应此组件的某些事件。监听能力例如:MouseListener类产生的“事件监听者”,将负责监听:鼠标移入(enter)、移出(exit)、点击(click)、按住(pressed)、放开(released)这些事件源。所以MouseListen
4、er类拥有用来响应上述事件源的事件函数:mouseEntered(MouseEvente)、mouseExited(MouseEvente)、mouseClicked(MouseEvente)等。事件类当组件的mouseEnter事件源被触动时,若该组件具有MouseListener监听能力,其监听机制就能侦测到“鼠标移入该组件”的事件源,该组件的事件机制中的mouseEntered事件就会发生,以响应mouseEnter事件源,也就是引发(自动执行)该组件的mouseEntered()事件函数。事件类监
5、听机制自动调用事件函数时,会导入代表该事件的对象(eventobject),此对象提供了该事件(event)的相关信息,且能供我们识别“事件源”。导入的对象都是属于某特定XXXEvent类类型的对象,例如mouseEntered事件发生时导入的是MouseEvent类的对象。建立GUI事件Java所有窗口应用程序的组件皆是以监听机制来接收并响应事件,无论是基本的AWT组件还是功能较多的Swing组件,其事件机制的实现方式都相同。而建立GUI事件的作法主要由以下两种方式:一般标准方法—implementsX
6、XXListener继承Adapter类的作法—extendsXXXListener一般标准方法—implementsXXXListener加入所需的监听能力首先为组件注册一个负责处理某方面事件的Listener对象(事件监听者),也就是使组件具备监听某一类事件的能力,方式如下:组件.addXXXListener(给XXXListener对象)一般标准方法—implementsXXXListener此处用“XXX”来表示,是因为一个组件通常能有监听多种类的事件源的能力,例如组件都会拥有addMouseLi
7、stener(MouseListener1)、addKeyListener(KeyListener1)等事件函数。表示它能具备监听键盘、鼠标等事件源的能力。一般标准方法—implementsXXXListener假设一个Button1按钮具有监听鼠标点击它的事件,那么可以这么写:Public构造函数(){……Button1.addMouseListener(MouseListener对象);This.add(Button1);……}一般标准方法—implementsXXXListener自定义一个实现XX
8、XListener接口的类(class)在上个步骤中需要导入一个XXXListener对象,但Java提供的是XXXListener接口类(Interface),无法直接用来产生对象的实例,因此我们得要自定义一个继承(implements)该接口的一般类,既然是继承接口类,那么就要实现该接口的所有方法。一般标准方法—implementsXXXListener假设需要的是Mouselistener对象,我们就要写一个实现Mous
此文档下载收益归作者所有