`
raymond.chen
  • 浏览: 1426561 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java事件机制范例

    博客分类:
  • Java
 
阅读更多

java事件机制的参与者:

event object:事件对象,时间产生时具体的“事件”,一般作为listener的方法参数使用。

event source:事件源,接收事件的实体。

event listener:事件监听器类。当有对应的event object产生时,调用相应的方法进行处理。

 

事件对象:

/**
 * 事件对象类
 * 		继承EventObject类
 */
public class DoorEvent extends EventObject{
	private static final long serialVersionUID = 6734613668785304327L;
	
	private String state;
	
	public DoorEvent(Object source, String state) {
		super(source);
		this.state = state;
	}
	
	public String getState() {
		return state;
	}
	
	public void setState(String state) {
		this.state = state;
	}
}

 

事件监听器:

/**
 * 事件监听器接口类
 * 		继承EventListener接口
 */
public interface DoorEventListener extends EventListener{
	public void fireEvent(DoorEvent event);
}

 

/**
 * 开门事件监听器类
 */
public class DoorOpenEventListener implements DoorEventListener {
	@Override
	public void fireEvent(DoorEvent event) {
		if("open".equals(event.getState())){
			System.out.println("Door opened");
		}
	}
}

 

/**
 * 关门事件监听器类
 */
public class DoorCloseEventListener implements DoorEventListener {
	@Override
	public void fireEvent(DoorEvent event) {
		if("close".equals(event.getState())){
			System.out.println("Door closed!");
		}
	}
}

 

事件源:

/**
 * 事件源类
 */
public class DoorManager {
	private Set<DoorEventListener> listeners = new HashSet<DoorEventListener>();
	
	/**
	 * 注册事件
	 */
	public void addListener(DoorEventListener listener){
		listeners.add(listener);
	}
	
	/**
	 * 删除事件
	 */
	public void removeListener(DoorEventListener listener){
		listeners.remove(listener);
	}
	
	/**
	 * 通知所有注册的事件
	 * @param event 事件对象
	 */
	private void notifyListeners(DoorEvent event){
		Iterator<DoorEventListener> it = listeners.iterator();
        while (it.hasNext()) {
        	DoorEventListener listener = (DoorEventListener) it.next();
            listener.fireEvent(event);
        }
	}
	
	public void openDoor(){
		DoorEvent event = new DoorEvent(this, "open");
        notifyListeners(event);
	}
	
	public void closeDoor(){
		DoorEvent event = new DoorEvent(this, "close");
        notifyListeners(event);
	}
	
	public static void main(String[] args) {
		DoorManager dm = new DoorManager();
		dm.addListener(new DoorOpenEventListener());
		dm.addListener(new DoorCloseEventListener());
		
		dm.openDoor();
		dm.closeDoor();
	}
}

 

分享到:
评论

相关推荐

    java事件处理编程范例

    本编程范例主要聚焦于Java的事件监听器和事件适配器机制,以及如何在J2EE(Java 2 Platform, Enterprise Edition)环境中实现这些概念。 首先,我们要理解Java事件模型。Java事件模型基于发布/订阅模式,其中事件源...

    JAVA编程通用范例

    Java编程通用范例是开发者们在进行Java编程时经常会参考的一种资源,它包含了各种常见问题的解决方案和最佳实践。这份资料旨在提供一个可嵌套到实际项目中的代码库,帮助开发者快速解决遇到的问题,提高开发效率。...

    java开发范例大全

    7. **反射机制**:Java的反射机制允许在运行时动态访问类的信息和对象的方法。通过范例,你可以了解如何使用Class类、Constructor类、Method类等来实现动态调用方法和创建对象。 8. **网络编程**:Java提供了Socket...

    Java范例大全 源码

    首先,全书以Java开发环境搭建开篇,循序渐进地介绍了Java语法的方方面面,不仅包括变量、语句、字符串、数组、类、集合、面向对象等必备的基础语法,而且还涵盖异常处理与反射机制、I/O文件操作、线程、数据库操作...

    Java通用范例开发金典源代码

    《Java通用范例开发金典源代码》是一个包含大量Java编程示例的资源集合,旨在帮助开发者深入理解和掌握Java编程语言的各种特性和应用场景。这个压缩包文件中的源代码覆盖了Java语言的基础到高级各个方面,是Java学习...

    Java通用范例开发金典

    《Java通用范例开发金典》是一本专为Java开发者准备的实践指南,它涵盖了大量Java编程中的常见问题和解决方案,旨在帮助读者更好地理解和应用Java语言。这份资源包含可直接运行的源码,使得学习过程更为直观和高效。...

    java 范例大全源代码

    "Java 范例大全源代码"是一个集合了众多Java编程示例的资源库,旨在帮助开发者深入理解Java语言的各种特性和用法。通过分析和实践这些源代码,开发者可以快速提升自己的编程技能和解决问题的能力。 首先,我们要...

    Java通用范例 开发金典

    3. **异常处理**:Java提供了强大的异常处理机制,源代码可能包含try-catch-finally语句块以及自定义异常的实例,用于处理运行时错误。 4. **集合框架**:Java集合框架包括List、Set、Map等接口及其实现类,如...

    《Java通用范例开发金典》

    10. **反射**:Java反射机制允许在运行时动态地获取类的信息并操作其内部属性和方法,提高了程序的灵活性。 11. **注解**:注解是元数据的一种形式,可以用于编译时或运行时进行处理,如配置、代码生成、验证等。 ...

    Java编程模式与范例pdf

    9. **并发编程**:Java提供了丰富的并发工具类,如线程池、同步机制(synchronized关键字、Lock接口)、并发集合等。设计模式在并发编程中也扮演着关键角色,例如生产者消费者模式、读写锁等。 10. **设计原则**:...

    [JAVA编程模式与范例].zip

    - GUI编程:使用Java Swing或JavaFX构建图形用户界面,理解事件处理模型。 4. **Java标准库与API**: - 学习并理解Java基础库,如集合框架、IO流、日期时间API(java.time包)、反射机制、注解等。 - 探索Java并...

    JAVA培训范例I,初学者入门的经典实例

    异常处理是Java中一个重要的错误处理机制,使用try-catch-finally语句块来捕获和处理可能出现的运行时错误。这可以帮助开发者编写健壮的代码,防止程序因未预见的问题而崩溃。 I/O流处理是Java的一大特色,Java提供...

    java2范例入门与提高(初学JAVA者)

    《Java2范例入门与提高》是一本专为初学者设计的Java编程教材,它旨在帮助初学者快速掌握Java语言的基础知识并逐步提升编程技能。Java作为一种广泛应用的面向对象编程语言,具有跨平台、高性能、安全性强等特点,是...

    java范例开发大全

    《Java范例开发大全》是一本全面覆盖Java编程的实用指南,旨在帮助初学者和有经验的开发者深入理解和掌握Java语言。这本书包含了从基础到高级的各类编程概念和技巧,通过丰富的实例代码来阐述理论知识,使学习过程...

    Java范例开发大全全书代码

    《Java范例开发大全》是一本深度探讨Java编程实践的书籍,其提供的全书源代码压缩包涵盖了370多个实例,旨在帮助开发者全面理解并掌握Java语言的应用。这些实例覆盖了Java语言的基础到高级特性,是学习和提升Java...

    JAVA程序设计范例

    **JAVA程序设计范例** Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)在1995年推出。它的设计理念是“一次编写,到处运行”,这意味着编写好的Java程序可以在任何...

    Java2范例入门与提高PDG格式

    本资源“Java2范例入门与提高PDG格式”显然是为了帮助初学者掌握Java2的基础知识,并通过实例来提升技能。PDG格式可能指的是电子书的一种格式,它可能包含一系列章节和实例代码,以便读者逐步学习和实践。 首先,...

    Java项目设计与开发范例

    在Java项目设计与开发范例中,我们涵盖了Java编程语言在实际项目中的应用,通过具体的案例来阐述如何高效地进行软件开发。以下是一些关键的知识点: 1. **面向对象编程**:Java是一种面向对象的语言,它提倡封装、...

    Java范例开发大全代码

    Java是一种强类型、类基于、面向对象的语言,它的设计目标是有着严格的类型检查、垃圾回收机制、并且能够编写一次,到处运行。Java程序由类组成,这些类定义了对象的属性和行为。类通过继承、封装和多态等面向对象...

    java 多线程交互简单范例

    在Java编程语言中,多线程是并发执行多个任务的核心机制。这个压缩包中的文件提供了几个关于Java多线程交互的实例,可以帮助我们深入理解如何在并发环境中控制线程的同步,确保数据的一致性和安全性。 首先,让我们...

Global site tag (gtag.js) - Google Analytics