导航:首页 > 编程语言 > 简述java的事件处理机制

简述java的事件处理机制

发布时间:2024-04-16 18:22:54

① 浅析java语言的事件处理快捷回复

在JAVA程序设计中 事件的处理是非常重要的 尤其是在需要自定义事件和设计JavaBean时 对事件的处理过程有一个完整的认识对于编程是很有帮助的

下面用一个演示性的例子来说明事件及其处理过程

一 事件的组成

如果想要自定义一个事件 则必须提供一个事件的监听接口以及一个事件类 在JAVA中监听接口继承java util EventListener 事件类继承java util EventObject 很多基本的事件在编程环境中都已经提供可以很方便使用 但是在自定义事件中必须要要了解这些

下面是一个事件类的代码 事件类可以向用户处理程序提供被监听类的信息

import java util *;

public class PropertyEvent extends EventObject {

public PropertyEvent(){}

}

下面是监听接口的代码

import java util *;

public interface PropertyListener extends EventListener {

public void propertyChanged(PropertyEvent propertyEvent);

}

二 事件的处理机制

下面是一段简要的被监听类代码 通过代码分析事件处理过程

import java util *;

public class Exam {

private int property;

//listeners用来存放已注册的监听对象

private Set listeners= new HashSet();

public void addListener(PropertyListener propertyListener){

//listeners必须保证只能被一个线程访问

synchronized(listeners){

listeners add(propertyListener);

}

}

public void firePropertyChange(){

Iterator iterator;

synchronized(listeners){

//将listeners中的类名放到iterator

iterator = new HashSet(erator();

}

//创建事件类

PropertyEvent propertyEvent = new PropertyEvent();

while(iterator hasNext()){

PropertyListener propertyListener = (propertyListener) iterator next();

//调用用户的事件处理程序

propertyListener propertyChanged(propertyEvent);

}

}

}

当属性值发生变化时 首先进行内部处理调用firePropertyChange方法 产生一个事件对象然后用事件对象为参数来调用用户的事件处理程序

三 事件处理的使用

基本用法

public Exam exam;

exam addListener(this);

public void propertyChange(PropertyEvent event){ }

注 exam是被监听对象 this为监听对象 是已经实现了接口方法的当前类 addListener

将当前类注册到listeners

一个被监听对象可以有多个监听对象

exam addListener(listener );

exam addListener(listener );

这样当exam的property发生变化时 actionListener 和actionListener 的处理程序都会

被调用 当然listener 和listener 必须都是已实现接口方法的类

被监听的对象也可以是实现了方法的接口

exam addListener(

new PropertyListener(){

//用户定义事件处理过程

public void propertyChange(PropertyEvent event){

}

);

lishixin/Article/program/Java/hx/201311/26740

② java的事件处理是什么

打个比方:如果用户用鼠标单击了按钮对象button,则该按钮button就是事件源,而java运行时系统会生成ActionEvent类的对象actionE,该对象中描述了该单击事件发生时的一些信息,然后,事件处理者对象将接收由java运行时系统传递过来的事件对象actionE并进行相应的处理。
由于同一个事件源上可能发生多种事件,因此java采取了授权处理机制,事件源可以把在其自身所有可能发生的事件分别授权给不同的事件处理者来处理。比如在Canvas对象上既可能发生鼠标事件,也可能发生键盘事件,该Canvas对象就可以授权给事件处理者一来处理鼠标事件,同时授权给事件处理者二来处理键盘事件。有时也将事件处理者称为监听器,主要原因也在于监听器时刻监听着事件源上所有发生的事件类型,一旦该事件类型与自己所负责处理的事件类型一致,就马上进行处理。授权模型把事件的处理委托给外部的处理实体进行处理,实现了将事件源和监听器分开的机制。事件处理者(监听器)通常是一个类,该类如果要能够处理某种类型的事件,就必须实现与该事件类型相对的接口。例如例5.9中类ButtonHandler之所以能够处理ActionEvent事件,原因在于它实现了与ActionEvent事件对应的接口ActionListener。每个事件类都有一个与之相对应的接口。将事件源对象和事件处理器(事件监听器)分开。
使用授权处理模型进行事件处理的一般方法归纳如下:
1.对于某种类型的事件XXXEvent, 要想接收并处理这类事件,必须定义相应的事件监听器类,该类需要实现与该事件相对应的接口XXXListener;
2.事件源实例化以后,必须进行授权,注册该类事件的监听器,使用addXXXListener(XXXListener ) 方法来注册监听器。
这是我的一点个人见解,希望对你有帮助,加油。

③ 简述java语言的事件处理机制,事件处理的3要素是什么.

(1)事件源 事件源是一个事件的产生者,如按钮、窗口及文本域等。
(2)事件类型 Java中所有的事件都封装成一个类,这些事件类被集中在java.awt.event包,所有的事件类均继承了AWTEvent类和一个方法——getSouce()方法,该方法返回发生事件的对象。
(3)事件监听器 不同的类型事件发生后,由事件监听器接收事件并调用相应的事件处理方法。所有的事件监听器实际上都是一个java.awt.event包中的接口,引入了java.util.EventListener接口。不同事件类型的监听器具有不同的方法。

④ 浅析Java与C#的事件处理机制(一)

Java与C#的事件处理都是实现了事件源 事件响应者机制 但又不完全相同 Java实现的是一种事件源与事件响应者两级实体对象方式 这里的事件响应者也是事件监听者 而C#实现的是一种事件源 代理 事件响应者三级实体对象方式 下面就这两种方式来具体说明

Java事件处理

从概念上讲 事件是一种在 源对象 和 监听者对象 之间 某种状态发生变化的传递机制 事件有许多不同的用途 例如在Windows系统中常要处理的鼠标事件 窗口边界改变事件 键盘事件等 在Java中则是定义了一个普通的 可扩充的事件机制 这种机制能够

对事件类型和传递的模型的定义和扩充提供一个公共框架 并适合于广泛的应用

与Java语言和环境有较高的集成度

事件能被描述环境捕获和触发

能使其它构造工具采取某种技术在设计时直接控制事件 以及事件源和事件监听者之间的联系

事件机制本身不依赖于复杂的开发工具

事件从事件源到监听者的传递是通过对目标监听者对象的Java方法调用进行的 对每个明确的事件的发生 都相应地定义一个明确的Java方法 这些方法都集中定义在事件监听者(EventListener)接口中 这个接口要继承java util EventListener 实现了事件监听者接口中一些或全部方法的类就是事件监听者 伴随着事件的发生 相应的状态通常都封装在事件状态对象中 该对象必须继承自java util EventObject 事件状态对象作为单参传递给应响应该事件的监听者方法中 发出某种特定事件的事件源的标识是 遵从规定的设计格式为事件监听者定义注册方法 并接受对指定事件监听者接口实例的引用 有时 事件监听者不能直接实现事件监听者接口 或者还有其它的额外动作时 就要在一个源与其它一个或多个监听者之间插入一个事件适配器类的实例 来建立它们之间的联系

事件状态对象(Event State Object)

与事件发生有关的状态信息一般都封装在一个事件状态对象中 这种对象是java util EventObject的子类 按设计习惯 这种事件状态对象类的名应以Event结尾 例如

public class MouseMovedExampleEvent extends java util EventObject{ protected int x y /*创建一个鼠标移动事件MouseMovedExampleEvent */MouseMovedExampleEvent(java awt Component source Point location) {super(source);x = location x;嫌银携y = location y;}/* 获取鼠标位置*/public Point getLocation() {return new Point(x y);}}

事件监听者接口(芹伏EventListener Interface)与事件监听者

由于Java事件模型是基于方法调用 因而需要一个定义并组织事件操纵方法的方式 事件操纵方法都被定义在继承了java util EventListener类的EventListener接口中 按规定 EventListener接口的命名要以Listener结尾 任何一个类如果想操纵在EventListener接口中定义的方法都必须以实现这个接口方式进行 这个类也就是事件监听者 例如

搏岁/*先定义了一个鼠标移动事件对象*/public class MouseMovedExampleEvent extends java util EventObject {// 在此类中包含了与鼠标移动事件有关的状态信息 }/*定义了鼠标移动事件的监听者接口*/interface MouseMovedExampleListener extends java util EventListener {/*在这个接口中定义了鼠标移动事件监听者所应支持的方法*/void mouseMoved(MouseMovedExampleEvent mme);}

在接口中只定义方法名 方法的参数和返回值类型 如 上面接口中的mouseMoved方法的具体实现是在下面的ArbitraryObject类中定义的

class ArbitraryObject implements MouseMovedExampleListener {public void mouseMoved(MouseMovedExampleEvent mme){ }}

ArbitraryObject就是MouseMovedExampleEvent事件的监听者

事件监听者的注册与注销

为了各种可能的事件监听者把自己注册入合适的事件源中 建立源与事件监听者间的事件流 事件源必须为事件监听者提供注册和注销的方法 在前面的bound属性介绍中已看到了这种使用过程 在实际中 事件监听者的注册和注销要使用标准的设计格式

public void add< ListenerType>(< ListenerType> listener) public void remove< ListenerType>(< ListenerType> listener)

首先定义了一个事件监听者接口

public interface ModelChangedListener extends java util EventListener {void modelChanged(EventObject e);}

接着定义事件源类

lishixin/Article/program/net/201311/14840

⑤ java中什么是事件源,事件的处理过程是什么

就是你通过什么触发了一个事件,比如单击按钮,那么这个按钮就是事件源,鼠标的移动(覆盖,离开,),键盘的输入,根据不同的情况可做不同的监听事件,使用不同的类来处理!

⑥ 简述Java事件委托模型的事件处理机制

java 事件委托机制的概念,一个源产生一个事件并将它送到一个或多个监听器那里。在这种方案中,监听器简单的等待,直到它收到一个事件。一旦事件被接受,监听器将处理这个事件,然后返

阅读全文

与简述java的事件处理机制相关的资料

热点内容
奥维地图导入的文件在哪里 浏览:364
sdltrados2014教程 浏览:43
培训制度文件在哪里找 浏览:601
勒索病毒防疫工具 浏览:861
win10c不能打开 浏览:375
xfplay影音先锋苹果版 浏览:597
两个文件打开两个word 浏览:921
苹果6s桌面图标轻微抖动 浏览:326
如何删除手机中看不见的临时文件 浏览:469
安卓412原生锁屏apk 浏览:464
书加加缓存文件在哪里 浏览:635
dock是word文件吗 浏览:267
社保公司新办去哪个网站下载资料 浏览:640
三维标注数据怎么填写 浏览:765
数据线断在哪里取出来 浏览:522
word最好的文件 浏览:345
大数据聚类数据库 浏览:247
网站关停域名怎么注销 浏览:456
适合微信阅读的手机报 浏览:114
win10设置应用权限管理 浏览:47

友情链接