今天有个同学问我,为什么点击按钮,按钮如果添加了监听器,就会有有响应。额,顿时也答不上来,因为以前只是知道怎么用,没想过,为什么加了监听器就会有响应。于是便看了一下MouseListener的api,其类的层次如下:
public interface EventListener {
}
public interface MouseListener extends EventListener
MouseEvent 的接口如下
public interface Event
public interface UIEvent extends Event
public interface MouseEvent extends UIEvent
查看网上资料知道:(http://blog.csdn.net/longyulu/article/details/25054697)
Java 最新的事件处理方法是基于授权事件模型
事件源生成事件并将其发送至一个或多个监听器
监听器简单地等待,直到它收到一个事件。一旦事件被接受,监听器将处理这些事件,然后返回。
事件:在授权事件模型中,事件是一个描述事件源状态改变的对象 。
通过鼠标、键盘与 GUI 界面直接或间接交互都会生成事件。 如:按下一个按钮、通过键盘输入一个字符、选择列表框中的一项、点击一下鼠标等。
事件源:事件源是一个生成事件的对象
一个事件源可能会生成不同类型的事件
事件源提供了一组方法,用于为事件注册一个或多个监听器。
每种事件的类型都有其自己的注册方法。一般形式为:
public void add<EventType>Listener (TypeListener e)
AWT采取的事件控制过程:监听器对象属于一个类的实例,这个类实现了一个特殊的接口,名为“监听者接口”
事件源是一个对象,它可以注册一个或多个监听器对象,并向其发送事件对象。
事件源将在发生事件时向所有注册的监听器发送事件对象。
监听器对象使用事件对象中的信息来确定它们对事件的响应
事件模型:
1.基于代理(授权)事件模型
事件处理是一个事件源授权到一个或者多个事件监听器。其基本原理是:组件激发事件,事件监听器监听和处理事件,可以调用组件的add<EventType>Listener方法向组件注册监听器。把其加入到组件以后,如果组件激发了相应类型的事件,那么定义在监听器中的事件处理方法会被调用。
2.此模型主要由以三种对象为中心组成
事件源 由它来激发产生事件,是产生或抛出事件的对象。
事件监听器 由它来处理事件
实现某个特定EventListener 接口,此接口定义了一种或多种方法,事件源调用它们以响应该接口所处理的每一种特定事件类型 。
事件 具体的事件类型
事件类型封装在以java.util.EventObject为根的类层次中。当事件发生时,事件记录发生的一切事件,并从事件源传播到监听器对象
来源:http://www.javaweb.cc/language/java/272459.shtml
一. 事件监听器的参与者:
1.事件对象:
一般继承自java.util.EventObject对象,由开发者自行定义.
2.事件源:
就是触发事件的源头,不同的事件源会触发不同的事件类型.
3.事件监听器:
事件监听器负责监听事件源发出的事件.一个事件监听器通常实现java.util.EventListener这个标识接口.
其整个处理过程是这样的,事件源可以注册事件监听器对象,并可以向事件监听器对象发送事件对象.事件发生后,事件源将事件对象发给已经注册的所有事件监听器.
监听器对象随后会根据事件对象内的相应方法响应这个事件.
package listener_v; import java.util.EventObject; //事件 public class DemoEvent extends EventObject{ public DemoEvent(Object source) { super(source); } }
package listener_v; import java.awt.event.MouseListener; import java.util.ArrayList; import java.util.List; import org.w3c.dom.events.MouseEvent; //事件源,有监听器注册和监听器代理两个方法 public class DemoEventSource{ private List<DemoListener> listenerList=new ArrayList<DemoListener>();//存储监听事件源的事件监听器对象 public DemoEventSource(){} //监听器注册,实际就是加入事件监听的列表中 public void addDemoListener(DemoListener listener){ listenerList.add(listener); } //将事件通知监听器,交由监听器代理 public void notifyDemoEvent(){ for(int i=0;i<listenerList.size();i++){ DemoEvent demoEvent = new DemoEvent(this); listenerList.get(i).processEvent(demoEvent); } } }
package listener_v; import java.util.EventListener; //监听接口 public interface DemoListener extends EventListener{ public void processEvent(DemoEvent demoEvent); }
package listener_v; public class TestDemoListener { public static void main(String[] args) { // TODO Auto-generated method stub new TestDemoListener(); } public TestDemoListener(){ //事件源 DemoEventSource eventsource=new DemoEventSource(); //为事件添加监听器 eventsource.addDemoListener(new DemoListener() { //更具事件类型,监听器执行响应 @Override public void processEvent(DemoEvent demoEvent) { // TODO Auto-generated method stub System.out.println("我的第一个监听器程序"); } }); //事件触发时,将事件分发给所有的监听器 eventsource.notifyDemoEvent(); } }
采用事件分发机制,就实现了界面元素与触发事件处理的分离
相关推荐
主要给大家介绍了关于java监听器实现和原理的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
今天小编就为大家分享一篇关于zookeeper监听器原理的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
java过滤器、监听器拦截器原理个人总结.pdf
深入全面的讲解了ORACLE监听器的工作原理和工作过程、 如何配置以及经常出现的问题和解决方法。
当范围对象的状态发生变化的时候,服务器自动调用监听器对象中的方法。 例如:创建一个“人”类Class Person 人拥有吃的方法public void eat(){},我们的目的是,在这个人吃之前要提醒他洗手,所以我们要...
主要介绍了Java设计模式之监听器模式,结合实例形式较为详细的分析了java设计模式中监听器模式的概念、原理及相关实现与使用技巧,需要的朋友可以参考下
Servlet监听器原理,具体使用场景,具体实例
第13章使用Servlet过滤器和监听器,基础知识
一、监听器工作原理 3 二、监听器Lisener功能 4 1、 监听客户端请求 4 2、 为客户端请求分配Server Process 4 3、 注册实例服务 4 4、 错误转移failover 4 5、 负载均衡衡量 4 三、监听器基本操作 5 1、监听器命令...
主要介绍了Java Web监听器Listener接口原理及用法实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
6.4.3. 监听器原理(面试重点) 30 6.4.4. Paxos算法(扩展) 32 6.4.5. 选举机制(面试重点) 34 6.4.6. 写数据流程 35 6.5. 企业面试真题 37 6.5.1. 请简述ZooKeeper的选举机制 37 6.5.2. ZooKeeper的监听原理是...
3.1 选举机制 3.2 节点类型 3.4 监听器原理 3.5 写数据流程
1:过滤器的原理。 2:如何使用过滤器。(对象 api 实现业务功能) 3:映射filter的多种方式 4:filter的案例(重点掌握) 1) 用户权限url设置 2) 解决全网站的post和get方式乱码。
在开发时遇到一个问题,需要对软键盘的打开与关闭操作进行监听。 但是由于android不直接提供对软键盘打开与关闭操作的监听器,所以必须自己来写一个...原理是通过对OnGlobalLayoutListener()来实现对软键盘的状态监听器
过滤器 监听器的实现原理和代码,总结的很详细
根据所学的反射原理,及光电转换,能够将输入信号调制为激光信号进行无线传输,接收端通过太阳能电池板进行光电转换,再经滤波、解调放大,最终还原输入信号的电路,
监听器配置,java监听器,登陆监听,Listener,struts监听器配置,用户在线统计 所谓线程(或称线索,thread),指程序中的以单一的顺序控制流。线程按顺序执行,即在一个线程中,一个时刻只能由一个执行点。显然...
主要给大家介绍了关于java中接口和事件监听器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
mini型监听器设计原理: 这是一款采用廉价的TDA7021做接收芯片,信号通过天线捕捉后进入前级运放后给7021解调。调谐由C3可调电容调频率。如果发射机发射固定的频率的话,电容参数调好后只要固定下来皆可。最后的音频...
SNIFF就是嗅探器,就是窃听器,SNIFF静悄悄的工作在网络的底层,把你的秘密全部记录下来。看过威尔史密斯演的《全民公敌》吗?SNIFF就象里面精巧的窃听器一样,让你防不胜防。 SNIFF可以是软件,也可以是硬件,...