java属性监听_Java event事件监听属性值变化 demo
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 listeners = new Vector();
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 currentListeners = null;
synchronized (this) {
currentListeners = (Vector) 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 {
@Override
public 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);
}
}
---------------------
作者:teamlet
来源:CSDN
原文:https://blog.csdn.net/teamlet/article/details/42618733
版权声明:本文为博主原创文章,转载请附上博文链接!
java属性监听_Java event事件监听属性值变化 demo相关推荐
- java按钮点击事件监听_按钮事件监听
[java]代码库/** * 功能:按钮事件监听 */ package com.test; import java.awt.*; import javax.swing.*; import java.a ...
- java 文本框输入监听事件_JAVA GUI 事件监听事件 详解 和 案例.
GUI(图形用户界面) Graphical User Interface(图形用户接口) 用图形的 方式, 来显示 计算机操作的 界面, 这样更方便 更直观. CLI Command Line Use ...
- java事件监听机制pdf,事件监听机制(转)
事件监听机制在java编程中有很重要的应用,一般我们在处理GUI编程时,只是重写一下监听接口的perform函数即可.但事件监听在底层是如何运行的?通过下面的例子我们可以有个清楚地了解. 1. ...
- Java语言学习--Swing中Button事件监听
1 前言 今天在使用Java Swing中的JButton的事件触发机制时遇到了许多问题,简单的了解了一下. 2 事件监听机制 事件监听的机制如下图所示分析. 3 代码分析 3.1 分步解析 1.事件 ...
- layui监听当前页_事件监听 · layui使用手册 · 看云
# 事件监听 语法:form.on('event(过滤器值)', callback); form模块在 layui 事件机制中注册了专属事件,所以当你使用layui.onevent()自定义模块事件时 ...
- java swing鼠标事件监听_java swing鼠标监听问题
需要对一个JButton b添加一个监听事件达到创建一个自定义的Position(x,y)的对象: 监听类NewListen中需要用到鼠标在面板上点击取坐标值来完成创建一个Position(x,y)的 ...
- java鼠标监听事件_JAVA 鼠标事件监听ACTIONLISTENER
当鼠标点击和放开时发生动作事件: 方法摘要: actionPerformed(ActionEvent e) 发生操作时调用. 列:public class shijian extends Frame ...
- java鼠标监听事件方法_java 鼠标事件监听ActionListener
当鼠标点击和放开时发生动作事件: 方法摘要: 列: public class shijian extends Frame { public static void main(String[] args ...
- java服务端监听_Java客户端正在监听WebSphere MQ服务器?
我需要编写一个监听WebSphere MQ服务器的Java客户机.消息放入服务器的队列中.Java客户端正在监听WebSphere MQ服务器? 我开发了这个代码,但我不确定它是否正确.如果正确,那我 ...
最新文章
- SD-WAN技术分析—Vecloud
- 16.1 Tomcat介绍16.2 安装jdk16.3 安装Tomcat
- Cannot send session cache limiter - headers already sent问题
- [react] 举例说明useState
- *p++,*(p++),(*p)++的区别
- 寄存器地址和内存地址_3. 从0开始学ARMARM模式、寄存器、流水线
- 将一正整数序列{K1,K2,…,K9}重新排成一个新的序列。新序列中,比K1小的数都在K1的左面(后续的再向左存放),比K1大的数都在K1的右面(后续的再向右存放),从K1向右扫描
- java时间往后一天_如何在Java中将日期增加一天?
- 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列
- visual studio插件开发dll类库免加全局缓存处理办法
- 一键刷入twrp_小米红米如何正确TWRP卡刷MIUI12波兰版或者欧版等系统详细教程
- 视频编码格式——h264优点
- 层次时间序列预测指南
- 在mtk6223的软t卡上实现对sdhc卡的读写
- 使用lanyu的激活码,报错1653219,解决办法
- 优美库图片小程序	Version1.0
- TCP/IP多路复用
- 如何接入量化交易接口api进行交易?
- Oracle 创建用户详解(create user)
- c#—MemoryStream读图片存入ImageList
热门文章
- 直播 | ACL 2021论文解读:提升预训练语言模型实体与关系理解的统一框架
- 做 NLP 算法研究,去大公司还是创业公司?
- ICLR 2021 | 美团、上交大等:鲁棒的可微分神经网络搜索DARTS-
- ​KDD 2020 开源论文 | 图神经网络多变量时序预测
- CVPR 2020 开源论文 | 多种可能性行人未来路径预测
- 一文带你看懂PaddleHub
- 深度 | 用代码构建机器心智,我们离这个目标还有多远?
- 2017年度最值得读的AI论文评选 | 大张旗鼓送福利
- html中js添加或删除activex,JS:操作样式表2 :用JS实现添加和删除一个类名的功能(addClass()和removeClass())...
- python 主语_前深度学习时代--FFM模型的原理与Python实现