`
sxpyrgz
  • 浏览: 72457 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

PropertyChangeSupport类

    博客分类:
  • java
阅读更多

 PropertyChangeSupport类

最近看代码一直碰到这个类,先做一个总结。

先看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);
 }
}

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/todebug/archive/2007/09/07/1776324.aspx

分享到:
评论

相关推荐

    详解java中的PropertyChangeSupport与PropertyChangeListener

    Java 中的 PropertyChangeSupport 和 PropertyChangeListener 是 JavaBeans 规范中两个重要的类,它们用于实现属性变化的监听和通知。下面我们将详细介绍这两个类的作用和使用方法。 PropertyChangeSupport 是一个...

    使用PropertyChangeSupport监控变量

    在Java编程中,`PropertyChangeSupport` 是一个用于实现属性更改通知机制的工具类,它在JavaBeans规范中被广泛使用。这个类帮助开发者轻松地为对象添加属性变更监听器,以便在对象的属性发生变化时通知其他感兴趣的...

    PropertyChangeListener

    ### PropertyChangeListener 在 ...通过以上介绍可以看出,`PropertyChangeListener` 机制为 JavaBean 提供了一种灵活的方式来通知外界对象属性的变化,而 `PropertyChangeSupport` 类则极大地简化了这一过程的实现。

    DesignPatternJava

    2. **PropertyChangeSupport类**:这个类提供了一个容器,用于存储`PropertyChangeListener`对象。当你想要在对象的属性改变时通知其他组件,可以使用`addPropertyChangeListener()`方法添加监听器,使用`...

    JavaBeans教程(范例入门

    ### PropertyChangeSupport类的作用 `PropertyChangeSupport`类是JavaBeans框架中用于管理属性变更事件的关键组件。它负责维护事件监听器列表,并在属性变化时调用`firePropertyChange()`方法广播事件。在`alden3`...

    01_JavaBean讲解(上)2

    5. **属性通知**:JavaBean可以提供属性改变的通知机制,通过实现PropertyChangeSupport类,可以监听和处理属性值的变化。 在“01_JavaBean讲解(上)第2部分”中,可能涵盖了以下主题: 1. **JavaBean的创建**:...

    第5章 JSP与JavaBean

    在代码中,Bound属性的事件触发通常通过PropertyChangeSupport类进行。首先,声明并实例化一个PropertyChangeSupport对象,然后使用它的`firePropertyChange()`方法来触发属性改变事件。开发工具或手动编程时,可以...

    javaBean复习材料

    此外,还可能涉及JavaBean的事件处理机制,例如ActionListener,以及如何使用PropertyChangeSupport类来实现属性变化监听。 "学员总结复习本门课程模板V1.0.ppt"则可能是一个详细的复习指南,涵盖了JavaBean的主要...

    Java容器总结

    它们可以通过容器进行管理和操控,例如,通过PropertyChangeSupport类来实现属性变化监听。源码分析有助于理解其设计模式和事件驱动机制。 3. **EJB(Enterprise JavaBeans)**:在企业级应用中,EJB容器负责管理...

    JavaBeans程序开发从入门到精通

    同时,通过PropertyChangeSupport类,组件可以通知对其属性更改的监听者。 3. **事件监听**:学习如何创建和注册事件监听器,处理事件源和事件处理方法。 4. **设计模式**:JavaBeans经常与工厂模式、单例模式等...

    Swing的通用框架

    10. **数据绑定**:例如,使用PropertyChangeSupport类和JavaBeans规范,实现组件属性与模型数据之间的自动同步。 在阅读《iteye博客》中关于Swing通用框架的文章(链接已提供),你可以深入理解如何利用这些组件和...

    Java用Swing开发的固定资产管理系统(完整版+源码).zip

    4. **数据绑定**:在Swing中,可以使用PropertyChangeSupport类进行属性变化的通知,使得视图能够实时响应模型数据的变化,实现双向数据绑定。 5. **数据库连接与操作**:系统可能使用JDBC(Java Database ...

    java swing

    9. **组件间通信**:可以通过ActionEvent对象传递信息,或者使用PropertyChangeSupport类实现组件间的属性变更通知。 10. **Swing工具类**:如SwingUtilities用于处理与GUI线程相关的任务,Timer类可以定时触发事件...

    Java_Web开发实战经典-开发实战练习

    JavaBeans还可以支持事件和监听器,比如PropertyChangeSupport类用于实现属性变化监听,这在组件间通信和状态管理中非常有用。 7. **EJB(Enterprise JavaBean)**: 如果JavaBean用于企业级应用,可以升级为EJB...

    java swing mysql实现的仓库商品管理系统项目源码.rar

    7. **数据绑定**: 可能使用了JavaBeans和PropertyChangeSupport类来实现视图与模型的数据绑定,使得界面元素的值可以直接反映模型状态的变化,反之亦然。 8. **异常处理**: 为了保证程序的健壮性,开发者通常会添加...

    java-2-exercise-15.33:创建一个动画bean机器

    属性变化监听**:JavaBeans支持属性变化监听器(PropertyChangeSupport类),这使得组件能够通知其使用者(如视图层)当其内部状态发生变化时。在动画中,这可以用来追踪和更新动画的状态。 **4. 绘图API**:Java...

    laptrinhswingmvc

    - **数据绑定**:使用PropertyChangeSupport类或Observer模式实现在模型与视图之间自动的数据同步。 - **Swing线程安全**:理解Event Dispatch Thread(EDT)的概念,确保所有对UI的操作都在EDT上执行,以避免界面...

    Counter100to0:重用组件Java Beans计数器100%到0%,默认值100%

    2. **属性**:Java Beans通过公开的get和set方法(也称为getter和setter)暴露其状态,这是通过JavaBeans API中的PropertyChangeSupport类来实现的。 3. **事件**:当组件的状态改变时,Java Beans可以触发事件,并...

    PropertyChangeSupportApi:处理注释和使用 PropertyChangeSupport 所需的额外代码

    在Java编程中,`PropertyChangeSupport` 是一个用于事件通知的内置类,它主要用于实现JavaBeans组件中的属性改变事件监听。这个API使得对象能够向感兴趣的其他对象广播其属性的变化,从而实现了观察者模式。在本项目...

Global site tag (gtag.js) - Google Analytics