PropertyChangeSupport类
2016-03-18 15:08
543 查看
先看PropertyChangeSupport类的官方文档解释:
This is a utility class that can be used by beans that support bound properties. You can use an instance of this class as a member field of your bean and delegate various work to it.
1.关联属性
在JavaBean的设计中,按照属性的不同作用又细分为四类:单值属性、索引属性、关联属性、限制属性。关联属性,也称之为绑定属性。绑定属性会在属性值发生变化时,通知所有相关的监听器。为了实现一个绑定属性,必须实现两个机制。
1) 无论何时,只要属性的值发生变化,该bean必须发送一个PropertyChange事件给所有已注册的监听器。
2) 为了使监听器能够注册,bean必须实现以下两个方法:void addPropertyChangeListener(PropertyChangeListener listener);
void removePropertyChangerListener(PropertyChangerListener listener);
2.使用PropertyChangeSupport管理监听器
可以通过java.bean包下的PropertyChangeSupport类来管理监听器。要使用这个类,bean必须有一个此类的数据域。private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
这样可以将添加和移除监听器的任务交给这个对象。public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.removePropertyChangeListener(listener);
}
当bean的属性发生变化时,使用PropertyChangeSupport对象的firePropertyChange方法,会将一个事件发送给所有已经注册的监听器。该方法有三个参数:属性的名字、旧的值以及新的值。属性的值必须是对象,如果是简单数据类型,则必须进行包装。listeners.firePropertyChange("ourString", oldString, newString);
所有注册的监听器实现PropertyChangeListener接口,该接口中只有一个方法。public void propertyChange(PropertyChangeEvent e)
当bean的属性值发生变化时,该方法中的代码就会被触发。可以通过e.getOldValue();
e.getNewValue();
来得到changes.firePropertyChange("ourString", oldString, newString);中的oldString和newString。
3.为什么要使用PropertyChangeSupport
使用这个类管理监听器的好处是,它是线程安全的。如果使用一个循环体来set Bean的属性,则这个类可以保证所有监听器执行触发事件的有序。
还有一个好处是,这个类支持fire带索引的属性改变事件(详见java.bean.IndexedPropertyChangeEvent)。此时向注册的监听器发送一个PropertyChangeEvent的方法为:void fireIndexedPropertyChange(String PropertyName,int index,Object oldValue,Object newValue)
4.实例代码
public class SomeBean {
private String property;
private PropertyChangeSupport changeSupport;
public void setProperty(String newValue) {
String oldValue = property;
property = newValue;
changeSupport.firePropertyChange("property", oldValue, newValue);
}
public void addPropertyChangeListener(PropertyChangeListener l) {
changeSupport.add(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changeSupport.remove(l);
}
}
最近看代码一直碰到这个类,先做一个总结。
先看PropertyChangeSupport类的官方文档解释:
This is a utility class that can be used by beans that support bound properties. You can use an instance of this class as a member field of your bean and delegate various work to it.
1.关联属性
在JavaBean的设计中,按照属性的不同作用又细分为四类:单值属性、索引属性、关联属性、限制属性。关联属性,也称之为绑定属性。绑定属性会在属性值发生变化时,通知所有相关的监听器。为了实现一个绑定属性,必须实现两个机制。
1) 无论何时,只要属性的值发生变化,该bean必须发送一个PropertyChange事件给所有已注册的监听器。
2) 为了使监听器能够注册,bean必须实现以下两个方法:void addPropertyChangeListener(PropertyChangeListener listener);
void removePropertyChangerListener(PropertyChangerListener listener);
2.使用PropertyChangeSupport管理监听器
可以通过java.bean包下的PropertyChangeSupport类来管理监听器。要使用这个类,bean必须有一个此类的数据域。private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
这样可以将添加和移除监听器的任务交给这个对象。public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.removePropertyChangeListener(listener);
}
当bean的属性发生变化时,使用PropertyChangeSupport对象的firePropertyChange方法,会将一个事件发送给所有已经注册的监听器。该方法有三个参数:属性的名字、旧的值以及新的值。属性的值必须是对象,如果是简单数据类型,则必须进行包装。listeners.firePropertyChange("ourString", oldString, newString);
所有注册的监听器实现PropertyChangeListener接口,该接口中只有一个方法。public void propertyChange(PropertyChangeEvent e)
当bean的属性值发生变化时,该方法中的代码就会被触发。可以通过e.getOldValue();
e.getNewValue();
来得到changes.firePropertyChange("ourString", oldString, newString);中的oldString和newString。
3.为什么要使用PropertyChangeSupport
使用这个类管理监听器的好处是,它是线程安全的。如果使用一个循环体来set Bean的属性,则这个类可以保证所有监听器执行触发事件的有序。
还有一个好处是,这个类支持fire带索引的属性改变事件(详见java.bean.IndexedPropertyChangeEvent)。此时向注册的监听器发送一个PropertyChangeEvent的方法为:void fireIndexedPropertyChange(String PropertyName,int index,Object oldValue,Object newValue)
4.实例代码
public class SomeBean {
private String property;
private PropertyChangeSupport changeSupport;
public void setProperty(String newValue) {
String oldValue = property;
property = newValue;
changeSupport.firePropertyChange("property", oldValue, newValue);
}
public void addPropertyChangeListener(PropertyChangeListener l) {
changeSupport.add(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changeSupport.remove(l);
}
}
最近看代码一直碰到这个类,先做一个总结。
先看PropertyChangeSupport类的官方文档解释:
This is a utility class that can be used by beans that support bound properties. You can use an instance of this class as a member field of your bean and delegate various work to it.
1.关联属性
在JavaBean的设计中,按照属性的不同作用又细分为四类:单值属性、索引属性、关联属性、限制属性。关联属性,也称之为绑定属性。绑定属性会在属性值发生变化时,通知所有相关的监听器。为了实现一个绑定属性,必须实现两个机制。
1) 无论何时,只要属性的值发生变化,该bean必须发送一个PropertyChange事件给所有已注册的监听器。
2) 为了使监听器能够注册,bean必须实现以下两个方法:void addPropertyChangeListener(PropertyChangeListener listener);
void removePropertyChangerListener(PropertyChangerListener listener);
2.使用PropertyChangeSupport管理监听器
可以通过java.bean包下的
4000
PropertyChangeSupport类来管理监听器。要使用这个类,bean必须有一个此类的数据域。private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
这样可以将添加和移除监听器的任务交给这个对象。public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.removePropertyChangeListener(listener);
}
当bean的属性发生变化时,使用PropertyChangeSupport对象的firePropertyChange方法,会将一个事件发送给所有已经注册的监听器。该方法有三个参数:属性的名字、旧的值以及新的值。属性的值必须是对象,如果是简单数据类型,则必须进行包装。listeners.firePropertyChange("ourString", oldString, newString);
所有注册的监听器实现PropertyChangeListener接口,该接口中只有一个方法。public void propertyChange(PropertyChangeEvent e)
当bean的属性值发生变化时,该方法中的代码就会被触发。可以通过e.getOldValue();
e.getNewValue();
来得到changes.firePropertyChange("ourString", oldString, newString);中的oldString和newString。
3.为什么要使用PropertyChangeSupport
使用这个类管理监听器的好处是,它是线程安全的。如果使用一个循环体来set Bean的属性,则这个类可以保证所有监听器执行触发事件的有序。
还有一个好处是,这个类支持fire带索引的属性改变事件(详见java.bean.IndexedPropertyChangeEvent)。此时向注册的监听器发送一个PropertyChangeEvent的方法为:void fireIndexedPropertyChange(String PropertyName,int index,Object oldValue,Object newValue)
4.实例代码
public class SomeBean {
private String property;
private PropertyChangeSupport changeSupport;
public void setProperty(String newValue) {
String oldValue = property;
property = newValue;
changeSupport.firePropertyChange("property", oldValue, newValue);
}
public void addPropertyChangeListener(PropertyChangeListener l) {
changeSupport.add(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changeSupport.remove(l);
}
}
This is a utility class that can be used by beans that support bound properties. You can use an instance of this class as a member field of your bean and delegate various work to it.
1.关联属性
在JavaBean的设计中,按照属性的不同作用又细分为四类:单值属性、索引属性、关联属性、限制属性。关联属性,也称之为绑定属性。绑定属性会在属性值发生变化时,通知所有相关的监听器。为了实现一个绑定属性,必须实现两个机制。
1) 无论何时,只要属性的值发生变化,该bean必须发送一个PropertyChange事件给所有已注册的监听器。
2) 为了使监听器能够注册,bean必须实现以下两个方法:void addPropertyChangeListener(PropertyChangeListener listener);
void removePropertyChangerListener(PropertyChangerListener listener);
2.使用PropertyChangeSupport管理监听器
可以通过java.bean包下的PropertyChangeSupport类来管理监听器。要使用这个类,bean必须有一个此类的数据域。private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
这样可以将添加和移除监听器的任务交给这个对象。public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.removePropertyChangeListener(listener);
}
当bean的属性发生变化时,使用PropertyChangeSupport对象的firePropertyChange方法,会将一个事件发送给所有已经注册的监听器。该方法有三个参数:属性的名字、旧的值以及新的值。属性的值必须是对象,如果是简单数据类型,则必须进行包装。listeners.firePropertyChange("ourString", oldString, newString);
所有注册的监听器实现PropertyChangeListener接口,该接口中只有一个方法。public void propertyChange(PropertyChangeEvent e)
当bean的属性值发生变化时,该方法中的代码就会被触发。可以通过e.getOldValue();
e.getNewValue();
来得到changes.firePropertyChange("ourString", oldString, newString);中的oldString和newString。
3.为什么要使用PropertyChangeSupport
使用这个类管理监听器的好处是,它是线程安全的。如果使用一个循环体来set Bean的属性,则这个类可以保证所有监听器执行触发事件的有序。
还有一个好处是,这个类支持fire带索引的属性改变事件(详见java.bean.IndexedPropertyChangeEvent)。此时向注册的监听器发送一个PropertyChangeEvent的方法为:void fireIndexedPropertyChange(String PropertyName,int index,Object oldValue,Object newValue)
4.实例代码
public class SomeBean {
private String property;
private PropertyChangeSupport changeSupport;
public void setProperty(String newValue) {
String oldValue = property;
property = newValue;
changeSupport.firePropertyChange("property", oldValue, newValue);
}
public void addPropertyChangeListener(PropertyChangeListener l) {
changeSupport.add(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changeSupport.remove(l);
}
}
最近看代码一直碰到这个类,先做一个总结。
先看PropertyChangeSupport类的官方文档解释:
This is a utility class that can be used by beans that support bound properties. You can use an instance of this class as a member field of your bean and delegate various work to it.
1.关联属性
在JavaBean的设计中,按照属性的不同作用又细分为四类:单值属性、索引属性、关联属性、限制属性。关联属性,也称之为绑定属性。绑定属性会在属性值发生变化时,通知所有相关的监听器。为了实现一个绑定属性,必须实现两个机制。
1) 无论何时,只要属性的值发生变化,该bean必须发送一个PropertyChange事件给所有已注册的监听器。
2) 为了使监听器能够注册,bean必须实现以下两个方法:void addPropertyChangeListener(PropertyChangeListener listener);
void removePropertyChangerListener(PropertyChangerListener listener);
2.使用PropertyChangeSupport管理监听器
可以通过java.bean包下的PropertyChangeSupport类来管理监听器。要使用这个类,bean必须有一个此类的数据域。private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
这样可以将添加和移除监听器的任务交给这个对象。public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.removePropertyChangeListener(listener);
}
当bean的属性发生变化时,使用PropertyChangeSupport对象的firePropertyChange方法,会将一个事件发送给所有已经注册的监听器。该方法有三个参数:属性的名字、旧的值以及新的值。属性的值必须是对象,如果是简单数据类型,则必须进行包装。listeners.firePropertyChange("ourString", oldString, newString);
所有注册的监听器实现PropertyChangeListener接口,该接口中只有一个方法。public void propertyChange(PropertyChangeEvent e)
当bean的属性值发生变化时,该方法中的代码就会被触发。可以通过e.getOldValue();
e.getNewValue();
来得到changes.firePropertyChange("ourString", oldString, newString);中的oldString和newString。
3.为什么要使用PropertyChangeSupport
使用这个类管理监听器的好处是,它是线程安全的。如果使用一个循环体来set Bean的属性,则这个类可以保证所有监听器执行触发事件的有序。
还有一个好处是,这个类支持fire带索引的属性改变事件(详见java.bean.IndexedPropertyChangeEvent)。此时向注册的监听器发送一个PropertyChangeEvent的方法为:void fireIndexedPropertyChange(String PropertyName,int index,Object oldValue,Object newValue)
4.实例代码
public class SomeBean {
private String property;
private PropertyChangeSupport changeSupport;
public void setProperty(String newValue) {
String oldValue = property;
property = newValue;
changeSupport.firePropertyChange("property", oldValue, newValue);
}
public void addPropertyChangeListener(PropertyChangeListener l) {
changeSupport.add(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changeSupport.remove(l);
}
}
最近看代码一直碰到这个类,先做一个总结。
先看PropertyChangeSupport类的官方文档解释:
This is a utility class that can be used by beans that support bound properties. You can use an instance of this class as a member field of your bean and delegate various work to it.
1.关联属性
在JavaBean的设计中,按照属性的不同作用又细分为四类:单值属性、索引属性、关联属性、限制属性。关联属性,也称之为绑定属性。绑定属性会在属性值发生变化时,通知所有相关的监听器。为了实现一个绑定属性,必须实现两个机制。
1) 无论何时,只要属性的值发生变化,该bean必须发送一个PropertyChange事件给所有已注册的监听器。
2) 为了使监听器能够注册,bean必须实现以下两个方法:void addPropertyChangeListener(PropertyChangeListener listener);
void removePropertyChangerListener(PropertyChangerListener listener);
2.使用PropertyChangeSupport管理监听器
可以通过java.bean包下的
4000
PropertyChangeSupport类来管理监听器。要使用这个类,bean必须有一个此类的数据域。private PropertyChangeSupport listeners = new PropertyChangeSupport(this);
这样可以将添加和移除监听器的任务交给这个对象。public void addPropertyChangeListener(PropertyChangeListener listener) {
listeners.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
listeners.removePropertyChangeListener(listener);
}
当bean的属性发生变化时,使用PropertyChangeSupport对象的firePropertyChange方法,会将一个事件发送给所有已经注册的监听器。该方法有三个参数:属性的名字、旧的值以及新的值。属性的值必须是对象,如果是简单数据类型,则必须进行包装。listeners.firePropertyChange("ourString", oldString, newString);
所有注册的监听器实现PropertyChangeListener接口,该接口中只有一个方法。public void propertyChange(PropertyChangeEvent e)
当bean的属性值发生变化时,该方法中的代码就会被触发。可以通过e.getOldValue();
e.getNewValue();
来得到changes.firePropertyChange("ourString", oldString, newString);中的oldString和newString。
3.为什么要使用PropertyChangeSupport
使用这个类管理监听器的好处是,它是线程安全的。如果使用一个循环体来set Bean的属性,则这个类可以保证所有监听器执行触发事件的有序。
还有一个好处是,这个类支持fire带索引的属性改变事件(详见java.bean.IndexedPropertyChangeEvent)。此时向注册的监听器发送一个PropertyChangeEvent的方法为:void fireIndexedPropertyChange(String PropertyName,int index,Object oldValue,Object newValue)
4.实例代码
public class SomeBean {
private String property;
private PropertyChangeSupport changeSupport;
public void setProperty(String newValue) {
String oldValue = property;
property = newValue;
changeSupport.firePropertyChange("property", oldValue, newValue);
}
public void addPropertyChangeListener(PropertyChangeListener l) {
changeSupport.add(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
changeSupport.remove(l);
}
}
相关文章推荐
- OpenCV 特征点检测
- TN21 命令与消息传递
- OpenCV Harris 角点检测子
- 用自动化运维工具解放IT运维
- sed 引入shell变量
- linux的nohup命令的用法
- Linux命令学习总结: file命令
- GNU/Linux 体系结构
- 关于下拉框select和option默认值选定
- linux下QTE环境搭建
- centos 死活安装不上 libxml
- shell
- shell脚本
- shell脚本
- 论反馈信息如何推动 IT 运维团队进步?
- Linux下的Select函数详解
- 基于openstack的Cloudlet
- openFrameworks 学习笔记(二)
- 记录nginx访问站点流量,并发等信息
- 【linux】ls[1]学习