Java event事件监听属性值变化 demo
来源:互联网 发布:淘宝备份模板找不到了 编辑:程序博客网 时间:2024/06/08 17:12
1、定义一个 ValueChangedEvent
ValueChangedEvent用于在设置属性值的时候,触发事件。
package org.teamlet;import java.util.EventObject;public class ValueChangeEvent extends EventObject {/** * */private static final long serialVersionUID = 767352958358520268L;private int value;public ValueChangeEvent(Object source) {this(source, 0);}public ValueChangeEvent(Object source, int newValue) {super(source);value = newValue;}public int getValue() {return value;}}
2、定义监听接口 ValueChangeListener
ValueChangeListener 提供属性值变化的接口。
package org.teamlet;public interface ValueChangeListener extends java.util.EventListener {public abstract void performed(ValueChangeEvent e);}
3、事件的产生者
EventProducer提供了监听容器listenerRegister,负责消费者的注册。
package org.teamlet;public class EventProducer {ListenerRegister register = new ListenerRegister();private int value;public int getValue() {return value;}public void setValue(int newValue) {if (value != newValue) {value = newValue;ValueChangeEvent event = new ValueChangeEvent(this, value);fireAEvent(event);}}public void addListener(ValueChangeListener a) {register.addListener(a);}public void removeListener(ValueChangeListener a) {register.removeListener(a);}public void fireAEvent(ValueChangeEvent event) {register.fireAEvent(event);}}
4、注册器
ListenerRegister负责注册和分发事件。
package org.teamlet;import java.util.Vector;public class ListenerRegister {private Vector<ValueChangeListener> listeners = new Vector<ValueChangeListener>();public synchronized void addListener(ValueChangeListener a) {listeners.addElement(a);}public synchronized void removeListener(ValueChangeListener a) {listeners.removeElement(a);}@SuppressWarnings("unchecked")public void fireAEvent(ValueChangeEvent evt) {Vector<ValueChangeListener> currentListeners = null;synchronized (this) {currentListeners = (Vector<ValueChangeListener>) listeners.clone();}for (int i = 0; i < currentListeners.size(); i++) {ValueChangeListener listener = (ValueChangeListener) currentListeners.elementAt(i);listener.performed(evt);}}}
5、事件的消费者
EventConsumer实现ValueChangedListener,当EventProducer 发送事件时,接收事件。
package org.teamlet;public class EventConsumer implements ValueChangeListener {@Overridepublic void performed(ValueChangeEvent e) {System.out.println("value changed, new value = " + e.getValue());}}
6、使用
package org.teamlet;public class Main {public static void main(String[] args) {EventProducer producer = new EventProducer();producer.addListener(new EventConsumer());producer.setValue(2);}}
3 0
- Java event事件监听属性值变化 demo
- input等表单项值或属性发生变化时的事件监听
- 99 event事件监听
- Java 事件监听原理及Demo实现
- 利用KVO监听属性值的变化
- java属性变化事件机制(1)
- java属性变化事件机制(2)
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- Servlet事件监听器、监听servletContext域对象创建和销毁、监听三个域对象属性变化
- Event-Listerner事件监听模式
- EditText输入变化监听事件
- Angular 监听路由变化事件
- EditText输入变化监听事件
- dom监听属性的变化
- Angular中使用$watch监听object属性值的变化
- swift 属性监听器,监听属性变化
- AWT 事件监听Demo ActionListener
- JavaScript事件event对象属性
- springMvc 的参数验证 BindingResult result 的使用
- 图————思维导图
- 国际C语言乱码大赛(IOCCC)经典之作
- sgu188:Factory guard(模拟)
- fork()函数的基本使用
- Java event事件监听属性值变化 demo
- android 报错:invalid resource directory name bin/res/crunch
- mongodb入门之mongodb介绍
- ewgwg
- [leetcode 7] Reverse Integer
- Just for test-1 rpart
- Git 笔记 git add
- hdoj 2109 Fighting for HDU
- sgu189:Perl-like Substr(字符串处理)