当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 任何时候,按下键盘或鼠标的键就产生了事件。
 

 

    摘要:/** * 屏蔽鼠标右键,f1帮助和常用快捷键 * author: huangyuyuan * date: 2004-09-10 */ function shield() { function document.oncontextmenu(){event.returnvalue=false;}//屏蔽鼠标右键 function window.onhelp(){return fa......
 ·深探java.util.logging包     »显示摘要«
    摘要:1.0 java logging overview 1.1 overview of control flow 1.2 log levels 1.3 loggers 1.4 logging methods 1.5 handlers 1.6 formatters 1.7 the logmanager 1.8 configuration file 1.9 default configuration 1.......


Java事件处理与发送
任何时候,按下键盘或鼠标的键就产生了事件.组件接受与处理事件的方式自jdk1.1以来都保持不变.swing组件能够产生许多不同类别的事件,包括那些在java.awt.event包以及在javax.swing.event包中的事件.swing新引入的那些事件类别往往是与特定swing组件相关的.每一个事件类别都是一个对象,它至少指明了事件的发生源,往往还带有其它消息,如该事件的类别.在事件发生前与发生后事件源状态的变化,等等.事件源大部分是普通的组件或模型(models, 即mvc中的m,在以后的blog中可能会介绍swing组件的mvc结构).其它的对象也可能产生事件.要想收到事件产生的通知,我们需要在目标对象上注册事件监听器.事件监听器是任意xxlistener类或接口的具体实现(xx代指事件的类型).xxlistener是定义在java.awt.event.java.beans与javax.swing.event包中的类或接口.在每个接口中至少定义了一个方法(method),该方法以对应的xxevent作为参数.支持发送xxevent事件发生通知的类都须实现xxlistener接口,同时提供相应的addxxlistener()与removexxlistener()方法来注册与移除这些事件监听器,大部分的事件目标对象(target)都允许注册任意多个事件监听器.通常支持xxevent的类都提供受保护的方法(protected method)firexx()来构造事件对象及将它送至事件处理器(event handler)进行处理.

eventlistenerlist是一个包含xxevent/xxlistener对(pairs)的阵列(数组).jcomponent及其派生类使用一个eventlistenerlist对象来维护其事件监听器.所有默认的模型(models)同样维护事件监听器与一个eventlistenerlist.当一个监听器被注册到一个swing组件或模型(model)时,对应的事件的class实例(用来标识事件类别)被添加至eventlistenerlist阵列,后面紧随该监听器本身(即一个xxevent/xxlistener对).因为这些对是储存在阵列而不是在可变的集合(mutable collection)中(出于对效率的考虑),每一次添加与移除都会调用system.arraycopy()来生成一个新的阵列.当收到事件时,阵列被遍历,事件就会被送至拥有其类型的每一个事件监听器.由于阵列是按xxevent, xxlistener, yyevent, yylistener, ... 的方式排列的,某个事件类别的监听器总是紧随其后.这种方式使得事件处理十分高效.为了线程安全,当从eventlistenerlist添加与移除监听器时,方法访问阵列必须同步. 【程序编程相关:基于目录结构认证的问题

javax.swing.event.eventlistenerlist类 【推荐阅读:向java宣战,从IDE开始

事件发送线程 【扩展信息:weblogic.jar和Tomcat5

jcomponent定义了一个名为listenerlist的受保护eventlistlistener属性,因而所有它的子类都继承了这个属性.swing组件直接透过listenerlist属性来管理其大部分事件监听器.


...   下一页
 ·junir源码分析(一)     »显示摘要«
    摘要:一、引子junit源码是我仔细阅读过的第一个开源项目源码。阅读高手写的代码能学到一些好的编程风格和实现思路,这是提高自己编程水平行之有效的方法,因此早就想看看这些赫赫有名的框架是怎么回事了。今天就拿最简单的junit下手,也算开始自己的源码分析之路。 junit作为最著名的单元测试框架,由两位业界有名人士协力完成,已经经历了多次版本升级(了解aspx">junit基础、aspx">junit实践)......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE