Java事件监听器模式
来源:互联网 发布:mac os和ios的区别 编辑:程序博客网 时间:2024/05/20 12:21
事件监听器模式(一个简单的例子)
在GUI程序设计中,在设计时通常不会知道用户的动作什么时候会发生,如用户可能点击某一
个按钮,也可能不点击,而且点击按钮的时机在运行时才可能知道。如果用传统的程序控制
方式,则很难做到准确的响应。通常这种情况或者类似的情况下,我们可以使用事件/监听器模式。
将一个监听器(listener)与特定的控件(如按钮等)绑定起来,当发生用户点击等事件(Event)时,
调用监听器的处理方法,从而响应用户的动作。是为事件/监听器模式。
事件有很多种,而且事件发生的时序是不确定的。可以简单的定义一个事件的接口,如下例:
Java代码
- interface
Event{ -
static int event1 = 0; -
static int event2 = 1; -
static int event3 = 2; -
… -
int getEventType(); - }
一个监听器的接口的一种可能形式:
Java代码
- interface
listener{ -
void handleEvent(Event event); - }
实现监听器接口的类可以根据事件的类型作出具体的响应方式如:
Java代码
- class
ListenerImpl implements Listener{ - some
other methods of this implementation; - …
- void
handleEvent(Event event){ -
switch(event.getEventType()){ -
case Event.event1: -
doSomething(); -
break; -
case Event.event2: -
doSomethingElse(); -
break; -
default: -
break; -
} - }
-
- GUIThread
thread = new GUIThread(); - thread.setListener(this);//注册监听器
- …
- }
在GUI的主流程中,需要有一个Event的实现者,和一个发起事件的组件,如:
Java代码
- class
EventImpl implements Event{ -
private int type; -
public EnentImpl(int type){ -
this.type = type; -
} - }
-
- class
GUIThread{ -
private Listener listener; -
public void setListener(Listener listener){ -
this.listener = listener; -
} -
-
public void execute(){ -
if(this.listener != null){ -
Event event = new EventImpl(type);//触发了某事件 -
listener.handleEvent(event); -
} -
} - }
当然,这个实现只是一个原理性的描述,应该可以很容易根据这个描述作出自己的实现。关于事件的处理以及事件类型的定义等可以完全根据自己的需求定制。
原文地址:Java事件监听器模式
阅读全文
0 0
- Java事件监听器模式
- Java设计模式--事件监听器
- java中的事件监听器和观察者模式
- java设计模式--观察者模式和事件监听器模式
- java设计模式--观察者模式和事件监听器模式
- java设计模式--事件监听器模式和观察者模式
- java设计模式--观察者模式和事件监听器模式
- java设计模式--事件监听器模式和观察者模式
- java设计模式--事件监听器模式和观察者模式 .
- java设计模式--事件监听器模式和观察者模式
- java设计模式--事件监听器模式和观察者模式
- java设计模式--事件监听器模式和观察者模式
- 观察者模式与事件监听器模式--java设计模式扫盲
- java 监听器和监听器模式
- java 事件监听器 适配器
- JAVA事件及监听器
- java事件监听器
- java awt 事件监听器
- Linux网卡设定网络参数各字段的含义
- 命令行下面编译运行eclipse中编写的带有包名的java文件
- python-深拷贝与浅拷贝
- pat 1008. 数组元素循环右移问题 (20)
- 阿里一面(整理自牛客网社区)
- Java事件监听器模式
- javaScript总结
- 热更新初步探索
- AXI4-Stream
- CAD字体下载 CAD shx fonts download
- 【Java集合】TreeMap分析
- 思考感悟4
- Mean Shift算法
- linux中的磁盘阵列与逻辑卷管理