java—监听器 (55)

监听器存在以下对象

监听者:XxxxxListener - 所的监听者是的接口。

被监听者 :任意对象都可以成为被监听者 - 早已经存在。

监听到的事件:XxxxEvent- 永远是一个具体类,用来放监听到的数据

里面都有一个方法叫getSource() – 返回的是监听到对象。

案例一:

package cn.hx.demo;

public class MyFrame extends JFrame {

public MyFrame() {

JButton btn = new JButton("你好");  //被监听者

System.err.println("btn: is:"+btn.hashCode());

btn.addActionListener(new MyListener() ); //监听者

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//获取容器

Container con= getContentPane();

//设置布局

con.setLayout(new FlowLayout());

con.add(btn);

setSize(300, 300);

setVisible(true);

}

public static void main(String[] args) {

new MyFrame();

}

//实现一个监听者

class MyListener implements ActionListener{

//监听方法

public void actionPerformed(ActionEvent  e) {

System.err.println("我监听到了:"+e.getSource()hashCode());  //可以从监听到的事件中获监听到的对象。

}

}

}


案例二:

观察者模式模拟监听

package cn.hx.demo;

public class TestObersver {

public static void main(String[] args) {

Person person = new Person();//声明被观察者

System.err.println("pp:"+person);

person.addPersonListener(new PersonListener() {

public void running(PersonEvent pe) {

System.err.println("你正在跑....."+pe.getSource());

throw new RuntimeException("他跑了。。。");

}

});

person.run();

}

}

class Person{

private PersonListener pl;

public void addPersonListener(PersonListener pl){

this.pl = pl;

}

public void run(){

if(pl!=null){

pl.running(new PersonEvent(this));

}

System.err.println("我正在跑步......");

}

}

interface PersonListener{

void running(PersonEvent pe);

}

class PersonEvent{

private Object src;

public PersonEvent(Object obj) {

this.src=obj;

}

public Object getSource(){

return src;

}

}

与上面的案例一进行对比,体会监听器做了什么。

时间: 2024-10-08 21:05:32

java—监听器 (55)的相关文章

java监听器

一.先看看jdk提供的event包:public interface EventListener:所有事件侦听器接口必须扩展的标记接口. package java.util; /** * A tagging interface that all event listener interfaces must extend. * @since JDK1.1 */ public interface EventListener { } public class EventObject extends O

JAVA监听器Listener

JAVA监听器Listener 一. 简介 监听器用于对web中内置对象的状态或者属性变化进行监听并做出相应响应的一种Servlet;在内置对象的生命周期中,产生.销毁等状态发生变化时,监听器就会进行监听并做出响应,当内置对象的属性发生增加,删除,修改等变化时,监听器也会做出相应响应. 二. 分类 ServletContext对象监听器 HttpSession对象监听器 ServletRequest对象监听器 三. 如何配置监听器 在web.xml中添加: <listener> <lis

JAVA监听器原理

原文来自:http://www.cnblogs.com/hulitut/archive/2012/03/27/2420414.html Java 最新的事件处理方法是基于授权事件模型 事件源生成事件并将其发送至一个或多个监听器 监听器简单地等待,直到它收到一个事件.一旦事件被接受,监听器将处理这些事件,然后返回. 事件:在授权事件模型中,事件是一个描述事件源状态改变的对象 . 通过鼠标.键盘与 GUI 界面直接或间接交互都会生成事件. 如:按下一个按钮.通过键盘输入一个字符.选择列表框中的一项.

Java基础(55):Exception类详解(转)

Java中的异常 Exception java.lang.Exception类是Java中所有异常的直接或间接父类.即Exception类是所有异常的根类. 比如程序: 1 public class ExceptionTest 2 { 3 public static void main(String[] args) 4 { 5 int a = 3; 6 int b = 0; 7 int c = a / b; 8 System.out.println(c); 9 } 10 } 编译通过,执行时结果

java监听器示例

监听器的原理是观察者模式.就像明星(事件源)聚拢了一群粉丝(观察者).当明星有啥举动的时候会通过粉丝们报道出去.订阅信息.计算器按钮都是该原理的应用. 下面写了一个监听器的小例子: package listener; import java.util.EventObject; /** * 定义事件对象,用于标记当前进行的动作.必须继承EventObject. * @author zyj * */ public class StateEvent extends EventObject { priv

java监听器之实现在线人数显示

在码农的世界里只有bug才能让人成长,The more bugs you encounter, the more efficient you will be! java中的监听器分为三种:ServletRequestListener.HttpSessionListener.ServletContextListener; ServletRequest--请求,在客户端对服务器发生请求(访问)时发生,请求一次发生一次(不考虑请求转发), 请求结束,该对象销毁: HttpSession--会话,单个用

java监听器的原理与实现

监听器模型涉及以下三个对象,模型图如下: (1)事件:用户对组件的一个操作,称之为一个事件 (2)事件源:发生事件的组件就是事件源 (3)事件监听器(处理器):监听并负责处理事件的方法 执行顺序如下: 1.给事件源注册监听器 2.组件接受外部作用,也就是事件被触发 3.组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器 4.事件处理器启动,并执行相关的代码来处理该事件. 监听器模式:事件源注册监听器之后,当事件源触发事件,监听器就可以回调事件对象的方法:更形象地说,监听者模式是基于

Java解惑 55 -- 特创论

某些时候,对于一个类来说,跟踪其创建出来的实例个数会非常用有,其典型实现是通过让它的构造器递增一个私有静态域来完成的.在下面的程序中,Creature类展示了这种技巧,而Creator类对其进行了操练,将打印出已经创建的Creature实例的数量.那么,这个程序会打印出什么呢? <span style="font-size:18px;">public class Creator { public static void main(String[] args) { for (

java 监听器实现原理

监听器实现者: public class MyActivity extends Activity implements InternetManager.Listener { private TextView mText; private InternetManager mInetMgr; /* called just like onCreate at some point in time */ public void onStateChange(boolean state) { if (stat