awt事件模型(观察者模式)(重点)
事件模型中,包括事件源对象,事件处理者(事件监听者对象),事件对象。
事件源和事件处理者之间建立了授权关系,事件源类中有一个事件处理者的对象作为属性,也可能是一个事件处理者的集合。
事件对象
事件源————————〉事件处理者
事件模型的机制,事件源对象发送一个消息(事件对象),事件处理者调用相应的方法处理事件。
事件监听器接口中定义的方法,都以事件对象为参数。
一个事件源可以注册多个同类型的监听器,也可以注册多种多个事件监听器,一个事件监听器也可以为多个事件源服务。
了解一下什么是发消息:A,B,C三个类,分别作为事件源,事件处理者,事件对象。在A类中有一个B类的属性或者是一个
内容为B类对象的集合,事件源和事件处理者之间的建立了授权关系,在B类需要实现一个自定义的接口,这个自定义的接口
继承了EventListener,EventListener接口中没有定义任何方法,EventListener是一个标记接口。实现在自定义接口中定
义好的用于事件处理的方法,C类要继承EventObject类。这些方法是以事件对象为参数的b(C c),在A类a(C c)方法中使
用B类的对象调用B类中的b(C c)方法,并把事件对象作为参数,并在main方法中用A类的对象调用了a(c)方法,叫做A类对
象给B类发送了消息。
例:
public class Test{
public static void main(String[] args){
B bt=new B()
A at=new A(bt);
at.a(new c());
}
}
class A{
private B b;
public A(){}
public A(B b){
this.b=b;
}
public void a(C c){
b.b(c);
}
}
class B{
public void b(C c){
System.out.println(“this is message ”+c.c())
}
}
class C{
public void c (){
System.out.println(“C Object”);
}
}
事件源对象间接调用了事件监听器的方法,以事件对象为实参传到事件监听器的方法中,事件源给事件监听器的方法发了一个
消息(事件对象)。
例子如下:
import java.util.*;
//事件源类
class A{
private String test;
private List li=new ArrayList();
public A(String test){
this.test=test;
}
public String getTest(){return this.test;}
public void addB(B b){
this.li.add(b);
}
public void removeB(B b){
this.li.remove(b);
}
public void fire(){
C c=new C(this);
Iterator it=li.iterator();
while(it.hasNext()){
B b=(B)it.next();
b.b(c);
}
}
}
//事件监听器的接口,要继承EventListener标记接口
interface Blistener extends EventListener{
void b(C c);
}
//事件监听器,实现接口
class B implements Blistener{
public void b(C c){
A a=(A)c.getSource();
System.out.println(a.getTest()+" "+c.getMessage());
}
}
//事件对象类
class C extends EventObject{
private String message;
public C(Object src){
super(src);
}
public void setMessage(String message){
this.message=message;
}
public String getMessage(){return this.message;}
}
public class Test{
public static void main(String[] args){
A a1=new A("Event");
B b1=new B();
c1.setMessage("Test");
a1.addB(b1);//注册监听器
a1.fire();//发送事件
}
}
以上代码只是事例,在引入包之后可以运行。
事件对象继承自EventObject类,并可以通过getSource()方法获得事件源对象,当然需要在构造事件对象时将事件源对象传
入,来区分是哪个事件源发出的事件,所以要用事件对象作为参数。
事件源,事件对象,监听器接口,在java.awt包中提供了很多已经定义好的,只需要实现监听接口就好了。
分享到:
相关推荐
Java入门的基础资料,了解Java 语言 ; 了解Java 程序的类型 ; 掌握Java 程序运行环境的配置 ; 理解Java 虚拟机 (JVM); 了解Java的特点
了解Java 语言 了解Java 程序的类型 掌握Java 程序运行环境的配置 理解Java 虚拟机 (JVM) 了解Java的特点
书中基于全新Java SE 8,完整且准确地阐述Java虚拟机规范,是深度了解Java虚拟机和Java语言实现细节的必读之作。 《Java核心技术系列:Java虚拟机规范(Java SE 8版)》共分7章。第1章从宏观的角度介绍了Java虚拟机...
Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合转换(了解).zip14.java集合...
Java 汇总学习简介 Java 作为一种广泛使用的高级编程语言,其学习涵盖了许多方面。在深入探讨之前,我们先来了解一下 Java 的基本课程,包括 SL110、SL275 和 SL285,这些课程通常由 SUN 公司提供,旨在帮助初学者...
程序设计语言 了解Java平台特性 了解Java集成开发环境 使用Eclipse开发Java应用 了解Java程序结构组成 常见问题
Java语言的基本语法是学习Java的第一步,了解Java语言的基本语法可以帮助开发者更好地掌握Java语言。 2. Java面向对象编程:Java语言支持面向对象编程(OOP),它可以模拟现实世界中的对象和关系。面向对象编程的...
Java面试通常涵盖多个...并发编程:了解Java中的线程、同步、锁等机制,以及Java并发包中的工具类。 JVM与性能调优:对Java虚拟机(JVM)有一定了解,包括内存管理、垃圾回收等方面,并知道如何进行基本的性能调优。
阅读建议:此资源以开发随机出题系统学习其java GUI原理和内核,不仅是代码编写实现,也更注重内容上的需求分析和过程理解,所以比较适合java初学者了解java的使用和GUI界面的设计,并调试对应的代码。
下面我们将详细探讨Java2Pas的工作原理、使用方法以及其在IT领域的应用。 首先,Java和Delphi是两种不同的编程语言,它们有着不同的语法结构和编程模型。Java是一种面向对象的语言,由Sun Microsystems(现已被...
Java使用类和对象来组织代码,而Python则支持多种面向对象的特性,包括类、对象、以及函数式编程元素。此外,Java的控制流程(如if-else,for循环)和异常处理与Python也有所不同。 在实际的转换过程中,工具可能会...
通过《Java开发实战经典》这本书的学习,读者不仅可以掌握Java语言的精髓,还能了解到实际开发中的最佳实践,提升编程能力,为参与复杂项目的开发打下坚实基础。书中的每个章节都可能包含丰富的示例代码,帮助读者...
VNC(Virtual Network Computing)是一种远程桌面协议,它允许用户通过网络访问并控制另一台计算机的图形...而深入研究VNC Java客户端的源码,还可以帮助我们学习网络编程、图形用户界面设计以及Java跨平台开发等技能。
对Java语言的基本认识,通过本文件可以了解Java语言。
5. 异常(Exception):了解何时以及如何处理异常。 总的来说,Java API文档中文网页版是Java开发者必备的参考资料,它可以帮助我们理解和使用Java平台提供的各种功能,提高编程的准确性和效率。在实际开发中,熟练...
- 使用此类工具通常需要了解其输入和输出格式,以及如何处理可能的转换问题,例如Java的多线程和静态方法在JavaScript中可能的替代方案。 5. **应用领域** - 单页应用(SPA)开发:利用Java代码的转换,可以将...
通过这份【Java项目展示PPT】,开发者或学生可以全面了解Java在实际项目中的应用,提升其Java编程技能和项目管理能力。无论是对于初学者还是经验丰富的开发者,这份PPT都是一份宝贵的参考资料。
让我们深入了解一下Java 17以及如何在Windows系统上进行安装。 Java 17,正式命名为Java SE 17 (Standard Edition),是Oracle公司推出的最新长期支持版(LTS),意味着它将获得至少五年的技术支持,包括安全更新和...