一. Java事件监听机制

1. 事件监听三要素: 事件源,事件对象,事件监听器

2. 三要素之间的关系:事件源注册事件监听器后,当事件源上发生某个动作时,事件源就会调用事件监听的一个方法,并将事件对象传递进去,开发者可以利用事件对象操作事件源。

3. 入门程序

 /**
* Created by IntelliJ IDEA.
*
* @Auther: ShaoHsiung
* @Date: 2018/8/29 21:25
* @Title: 事件监听入门程序
* @Description:
*/
public class Demo1 {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setSize(400, 500);
frame.setVisible(true);
// 为frame注册一个事件监听器
frame.addWindowListener(new WindowListener() {
@Override
public void windowOpened(WindowEvent e) { } @Override
public void windowClosing(WindowEvent e) {
System.out.println("再会~~~");
// 通过事件对象获取事件源
Frame frame = (Frame) e.getSource();
// 关闭窗口
frame.dispose();
} @Override
public void windowClosed(WindowEvent e) { } @Override
public void windowIconified(WindowEvent e) { } @Override
public void windowDeiconified(WindowEvent e) { } @Override
public void windowActivated(WindowEvent e) { } @Override
public void windowDeactivated(WindowEvent e) { }
});
}
}

二. 设计一个能够被其它类监听的类(如何实现监听机制)

其实就是观察者模式

1. 事件源

 // 事件源
class Door { private DoorListener doorListener; public void addDoorListener(DoorListener doorListener) {
this.doorListener = doorListener;
} public void open() {
if (doorListener != null) {
doorListener.doOpen(new DoorEvent(this));
}
System.out.println("门打开了。。。");
} public void close() {
if (doorListener != null) {
doorListener.doClose(new DoorEvent(this));
}
System.out.println("门关上了。。。");
}
}

2. 事件监听器

 // 监听器
interface DoorListener {
public void doOpen(DoorEvent doorEvent);
public void doClose(DoorEvent doorEvent);
}

3. 事件对象

 // 事件对象
class DoorEvent {
// source
private Door door;
public DoorEvent() {}
public DoorEvent(Door door) {
this.door = door;
} public Door getDoor() {
return door;
} public void setDoor(Door door) {
this.door = door;
}
}

4. 测试

 public class Demo2 {

     public static void main(String[] args) {
// 门
Door door = new Door();
// 注册监听器
door.addDoorListener(new DoorListener() {
@Override
public void doOpen(DoorEvent doorEvent) {
System.out.println(doorEvent + " bomb~~~");
} @Override
public void doClose(DoorEvent doorEvent) {
System.out.println(doorEvent + " bomb2~~~");
}
});
door.open();
door.close();
}
}

完整代码:

 /**
* Created by IntelliJ IDEA.
*
* @Auther: ShaoHsiung
* @Date: 2018/8/29 21:45
* @Title: 观察者设计模式
* @Description:
*/
public class Demo2 { public static void main(String[] args) {
// 门
Door door = new Door();
// 注册监听器
door.addDoorListener(new DoorListener() {
@Override
public void doOpen(DoorEvent doorEvent) {
System.out.println(doorEvent + " bomb~~~");
} @Override
public void doClose(DoorEvent doorEvent) {
System.out.println(doorEvent + " bomb2~~~");
}
});
door.open();
door.close();
}
} // 事件源
class Door { private DoorListener doorListener; public void addDoorListener(DoorListener doorListener) {
this.doorListener = doorListener;
} public void open() {
if (doorListener != null) {
doorListener.doOpen(new DoorEvent(this));
}
System.out.println("门打开了。。。");
} public void close() {
if (doorListener != null) {
doorListener.doClose(new DoorEvent(this));
}
System.out.println("门关上了。。。");
}
} // 监听器
interface DoorListener {
public void doOpen(DoorEvent doorEvent);
public void doClose(DoorEvent doorEvent);
} // 事件对象
class DoorEvent {
// source
private Door door;
public DoorEvent() {}
public DoorEvent(Door door) {
this.door = door;
} public Door getDoor() {
return door;
} public void setDoor(Door door) {
this.door = door;
}
}

Java事件监听机制与观察者设计模式的更多相关文章

  1. java事件监听机制

    1.简单的事件监听 package demo2; /* * java事件监听机制 */ import java.awt.*; import javax.swing.*; import java.awt ...

  2. java事件监听机制2

    今天早上的两点收获: 1.addActionListener(其中的setActionCommand函数就是要对对象进行唯一性的标记,便于消息传来后进行处理.理论上actionlistener可以全部 ...

  3. JAVA事件监听机制的实现

    今天学习了java的事件编程机制,略有体会,先在此记下心得. 第一,首先明确几个概念. 事件源:一个产生或者触发事件的对象.事件:承载事件源状态改变时的信息对象.事件监听器接口:实际上就是一个类,该类 ...

  4. JAVA事件监听机制学习

    //事件监听机制 import java.awt.*; import java.awt.event.*; public class TestEvent { public static void mai ...

  5. JAVA事件监听机制与实现

    事件监听机制的实现:参考图:事件模型_ActionEvent 为了节省资源,系统无法对某个事件进行实时的监听.故实现的机制是当发生某个事件后,处理代码将被自动运行,类似钩子一般.(回调函数) 事件有许 ...

  6. java 事件监听机制组成

    事件源(组件) 事件(Event) 监听器(Listener) 事件处理(引发事件后处理方式) 事件监听机制流程图 务必记牢: 确定事件源(容器或组件) 通过事件源对象的addXXXListener( ...

  7. java事件监听机制(自定义事件)

    java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中作为参数,一般存在与listerner的方法之中 2.event source ...

  8. 【转】java事件监听机制

    java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中作为参数,一般存在与listerner的方法之中 2.event source ...

  9. java Gui编程 事件监听机制

    1.     GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式:   1. 命令交互方式    图书管理系统 ...

随机推荐

  1. markdown常用数学符号小结

    (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 markdown使用LaTex输入数学公式类 Markdown数学符号&公式 CSDN-MarkDown编辑器使用手册(4)- ...

  2. spring其他配置 (3)

    目录 一.自动装配 Autowired 二.bean的作用于singleton,prototype 三.引入外部资源properties文件 四.SpEL表达式 (可以为属性进行动态的赋值) 五.通过 ...

  3. [转]C++的Json解析库:jsoncpp和boost

    JSON(JavaScript Object Notation)跟xml一样也是一种数据交换格式,了解json请参考其官网http://json.org,本文不再对json做介绍,将重点介绍c++的j ...

  4. 3、发送第一个api请求

    接口地址:https://www.v2ex.com/api/topics/latest.json Method: GET Authentication: None 我们打开postman,方法选择ge ...

  5. 推荐5本纯Java技术书,你看过几本?

    51小长假了,大家应该对它又爱又痛,爱的是终于可以到处浪了,痛的是没钱只能穷游,而且还到处都是人,结果变成了堵高速.去看人头.去蒸饺子,真是受罪啊.. 所以,对于小长假的痛,我相信还是有一部分人会选择 ...

  6. 活动:月末送Java技术书福利|抽奖

    本公众号运营了快一年了 原创干货超过200+ 收获了也快1W粉丝 这么多粉丝-- 送书活动怎能少? 虽然这次我们是有备而来 但是-- 所有书籍为作者自掏腰包 所以本次送书数量有限 不能满足到所有人 重 ...

  7. 02ubuntu下python环境安装

    原文链接:https://blog.csdn.net/weixin_42549407/article/details/85198460 我安装的是python3.6.9 1.下载python的源码压缩 ...

  8. 【POJ】1611 The Suspects

    题目链接:http://poj.org/problem?id=1611 题意:有学生感染了SARS.一个学生可以加入很多小组.n个学生m个小组,每个小组有k个组内成员,后跟着k个成员的组内编号.让你求 ...

  9. Python自学:第五章 使用函数range( )

    # -*- coding: GBK -*- for value in range(1,5): print(value) 输出为: 1 2 3 4

  10. Excel-根据分隔符将一个单元格的内容分发到多个单元格

    A1 1:2:3:4:5:6:7::::10 现在想将A1根据";"进行分离,再讲分离出来的一个值填到一个单元格中 =TRIM(MID(SUBSTITUTE($A$12," ...