对于图形用户界面的程序来说,事件处理是十分重要的。要想实现用户界面,必须掌握Java事件处理的基本方法。
任何支持GUI的操作环境都要不断地监视敲击键盘或点击鼠标这样的事件。操作环境将这些事件报告给正在运行的应用程序。如果有事件产生,每个应用程序将 决定如何对它们作出响应。在VisualBasic这样的语言中,事件与代码之间有着明确的对应关系。程序员对相关的特定事件编写代码,并将这些代码放置 在过程中,通常人们将它们称为事件过程(event procedure)。例如,有一个名为HelpButton的VisualBasic按钮有一个与之关联的HelpButton_Click时间过程。 这个过程中的代码将在点击按钮后执行。每个VisualBasic的GUI组件都响应一个固定的事件集,不可能改变VisualBasic组件响应的事件 集。
另一方面,如果使用像原始的C这样的语言进行事件驱动的程序设计,那就需要编写代码来 不断地检查事件队列,以便查询操作环境报告的内容(通常这些代码被放置在包含很多switch语句的循环体申)。显然,这种方式编写的程序可读性很差,而 且在有些情况下,编码的难度也非常大。它的好处在于响应的事件不受限制,而不像VisualBasic这样的语言,将事件队列对程序员隐藏起来。
Java程序设计环境折中了VisualBasic与原始C的事件处理方式,因此,它既有着强大的功能,又具有一定的复杂性。在AWT所知的事件范围 内,完全可以控制事件从事件源(event source)例如,按钮或滚动条,到事件监听器(event listener)的传递过程,并将任何对象指派给事件监听器。不过事实上,应该选择一个能够便于响应事件的对象。这种事件委托模型(event delegation model)与VisualBasic那种预定义监听器模型比较起来更加灵活。
事件源有一些向其注册事件监听器的方法。当某个事件源产生事件时,事件源会向为事件注册的所有事件监听器对象发送一个通告。
像Java这样的面向对象语言,都将事件的相关信息封装在一个事件对象(event object)中,在Java中,所有的事件对象都最终派生于java.util.EventObject类。当然,每个事件类型还有子类,例 如,ActionEvent和WindowEvent。
不同的事件源可以产生不同类别的事件。例如,按钮可以发送一个ActionEvent对象,而窗扣可以发送WindowEvent对象。
综上所述,下面给出AWT事件处理机制的概要:
监听器对象是一个实现了特定监听器接口(listener interface)的类的实例。
事件源是一个能够注册监听器对象并发送事件对象的对象。
当事件发生时,事件源将事件对象传递给所有注册的监听器。
监听器对象将利用事件对象中的信息决定如何对事件做出响应。
当前名称:网站建设核心之事件处理基础
网站链接:/news/192777.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有网站建设等
广告
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源:
创新互联