周末有人问道我java中事件机制是怎么实现的,天天只知道new一个事件适配器,今天结合网上的文章一起看看java中如何实现事件的监听。其实就是自定义事件。
其中有三个主要相关的类
1、EventObject
所有事件状态对象都将从其派生的根类。
所有 Event 在构造时都引用了对象 "source",在逻辑上认为该对象是最初发生有关 Event 的对象。
2、EventListener 接口
public interface EventListener
所有事件侦听器接口必须扩展的标记接口。
3、source 具体的接受事件的实体,比如说,你点击一个button,那么button就是event source,这样你必须使button对某些事件进行相应,你就需要注册特定的listener,比如说MouseEvent之中的 MouseClicked方法,这是他就必须有了add方法
package java1.base1.event1;
import java.util.EventListener;
import java.util.EventObject;
public class DemoEvent extends EventObject {
public DemoEvent(Object source) {
super(source);
}
}
package java1.base1.event1;
import java.util.EventListener;
/**
* @Title: Demolistener.java
* @Description: <br>
* <br>
* @Company: ChinaSoft International
* @Created on 2011-1-10 下午04:30:19
* @author chenhua
* @version $Revision: 1.0 $
* @since 1.0
*/
public interface Demolistener extends EventListener {
public void DemoEvent(DemoEvent de);
}
package java1.base1.event1;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import com.sun.org.apache.bcel.internal.generic.NEW;
/**
* @Title: DemoSource.java
* @Description: <br>
* <br>
* @Company: ChinaSoft International
* @Created on 2011-1-10 下午04:34:16
* @author chenhua
* @version $Revision: 1.0 $
* @since 1.0
*/
public class DemoSource {
private List list=new ArrayList();
Demolistener dl;
public void addDemoListener(Demolistener dl){
list.add(dl);
}
public void notifyDemoEvent(){
for(int i=0;i<list.size();i++){
dl=(Demolistener)list.get(i);
dl.DemoEvent(new DemoEvent(dl));
}
}
}
package java1.base1.event1;
/**
* @Title: TestDemoEvent.java
* @Description: <br>
* <br>
* @Company: ChinaSoft International
* @Created on 2011-1-10 下午04:51:41
* @author chenhua
* @version $Revision: 1.0 $
* @since 1.0
*/
public class TestDemoEvent {
DemoSource Ds;
public TestDemoEvent(){
try {
Ds=new DemoSource();
Ds.addDemoListener(new Demolistener(){
public void DemoEvent(DemoEvent de) {
System.out.println("spy-sky 455927885 ");
}
});
} catch (Exception e) {
e.printStackTrace();
}
Ds.notifyDemoEvent();
}
/**
* @param args
*/
public static void main(String[] args) {
new TestDemoEvent();
}
}
将EventObject子类作为参数,定义事件对应的listener接口。实现source。
分享到:
相关推荐
Java事件处理机制是Java编程中一个关键的概念,它主要用于用户界面(UI)应用程序,使得程序能够响应用户的操作,如点击按钮、选择菜单项等。在Java中,事件处理主要涉及三个核心组件:事件源(Event Source)、事件...
在Java编程语言中,事件处理机制是构建图形用户界面(GUI)交互功能的核心技术。理解这一机制对于编程人员而言至关重要,因为它涉及到程序如何响应用户的操作。为了让初学者更好理解Java事件处理机制及其编程技术,黄...
本示例"java事件处理机制Demo"将深入探讨Java的观察者模式(Observer Pattern)及其在实际项目中的应用。 首先,我们来理解什么是观察者模式。观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当...
本教学方法探讨旨在深入理解并有效地教授Java事件处理,帮助学习者掌握这一关键技能。 Java事件处理基于观察者模式(Observer Pattern),其中事件源(如按钮或菜单)是被观察的对象,而事件监听器是观察者,负责...
Java 事件处理机制探讨 Java 事件处理机制是 Java 语言 GUI 编程中的一个重要内容,涉及到多个抽象的概念和复杂的对象之间的关系,对初次接触的学生来说,难以清晰地理解其原理。本文探讨了如何在教学中科学地讲授...
在本文中,我们将深入探讨如何利用Java事件处理机制实现录制和回放功能,这种功能常见于GUI测试工具中,用于捕获用户操作并在代码修改后自动回放这些操作。 1. Java 事件介绍 - **事件是什么**:在Java中,事件是...
通过本文,我们将深入探讨Java反射机制的核心概念、基本原理及其应用场景。 #### 二、Java反射机制简介 Java反射机制允许程序在运行时获取类的信息,这使得Java具有了一定程度上的动态性。具体来说,Java反射机制...
本文将深入探讨Java中的事件处理,并结合一个具体的例子——登录功能的实现,来进一步阐述这一主题。 首先,我们需要了解Java事件模型的基础。在Java AWT(Abstract Window Toolkit)和Swing库中,事件处理主要基于...
本文将围绕“Java GUI编程中的事件处理机制详细讲解(1)”这一主题展开,深入探讨组件类事件、动作类事件以及事件委托授权处理模型等内容,并结合实际案例进行说明。 #### 组件类事件与动作类事件 Java GUI编程中...
本指南将深入探讨Java事件处理的原理、机制以及相关实践。 首先,Java事件处理基于Observer模式,即观察者模式。在这种模式下,事件源(通常是GUI组件,如按钮、文本框等)是被观察的对象,当它们的状态发生改变时...
本实例将深入探讨Java事件处理机制,特别是按钮的单击事件。在Java Swing或JavaFX库中,我们可以创建按钮并定义其单击行为。以下是关于这个主题的详细讲解。 首先,我们需要导入必要的Java Swing库,如`javax.swing...
JAVA的异常处理机制探讨,java日常处理技术与在设计中的应用
本文基于给定的文件信息,深入探讨Java安全机制的关键组成部分及其运作原理。 ### Java安全机制的体系结构 Java安全架构的核心在于其设计时就充分考虑了安全因素,而不是后期添加的。这一设计思路主要体现在以下三...
本篇将深入探讨Java事件处理机制,以及如何在实际应用中使用事件。 首先,事件源(Event Source)是能够产生事件的对象,通常是指组件,如按钮、文本框等。当用户与这些组件进行交互时,例如点击按钮或输入文本,就...
本文将深入分析观察者模式的组成部分和应用场景,并探讨Java事件处理机制的原理,以及事件源、事件、监听器与观察者设计模式中各角色的对应关系。 观察者模式的组成部分包括被观察者(Subject)和观察者(Observer...
Java提供了同步机制来解决这个问题,包括`synchronized`关键字、`Lock`接口(如`ReentrantLock`)等。例如,以下代码中的`next()`方法可能引发竞态条件: ```java public int next(){ ++intValue; // danger ...
Java反射机制是Java编程语言中的一个重要特性,它允许程序在运行时获取和操作任何已知名称的类的内部信息。这一机制使得Java具备了一定的动态性,虽然在传统的分类中Java被视为静态类型语言。通过反射,开发者可以在...