`

PropertyChangeSupport

    博客分类:
  • java
阅读更多
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;

/**
 *
 * @author max
 */
public class Domain{
        protected String id;
        protected String name;
        protected String desName;

        protected PropertyChangeSupport listeners = new PropertyChangeSupport(this);

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
            firePropertyChange("Domain.id", null, id);
        }

        public String getDesName() {
           return desName;
        }

        public void setDesName(String desName) {
            this.desName = desName;
            firePropertyChange("Domain.desName", null, desName);
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
            firePropertyChange("Domain.name", null, name);
        }

        public void addPropertyChangeListener(PropertyChangeListener listener) {
            listeners.addPropertyChangeListener(listener);
        }

        public void firePropertyChange(String propName, Object oldValue, Object newValue) {
            listeners.firePropertyChange(propName, oldValue, newValue);
        }

        public void removePropertyChangeListener(PropertyChangeListener listener) {
            listeners.removePropertyChangeListener(listener);
        }
    }
 
java 代码
  1. public class SimpleObserver implements PropertyChangeListener {   
  2.        
  3.     ....   
  4.        
  5.     @Override  
  6.     public void propertyChange(PropertyChangeEvent evt) {   
  7.         if(evt.getPropertyName().equals("Domain.name")){   
  8.             //do some work   
  9.         }   
  10.     }   
  11.        
  12. }  

下面是个简单的测试类:

java 代码
  1. public class SimpleTest{   
  2.     public static void main(String[] args) {   
  3.         SimpleObserver observer = new SimpleObserver();   
  4.         Domain domain = new Domain();   
  5.         domain.addPropertyChangeListener(observer);   
  6.         domain.setName("yangsq");   
  7.         ......   
  8.     }   
  9. }  

很显然,可以观察到SimpleObserver中propertyChange方法的执行。

分享到:
评论

相关推荐

    使用PropertyChangeSupport监控变量

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

    详解java中的PropertyChangeSupport与PropertyChangeListener

    详解 Java 中的 PropertyChangeSupport 与 PropertyChangeListener Java 中的 PropertyChangeSupport 和 PropertyChangeListener 是 JavaBeans 规范中两个重要的类,它们用于实现属性变化的监听和通知。下面我们将...

    用js实现和Java中的PropertyChangeSupport类似的观察者模式

    闲着没事,突然想起Java的观察者模式中有一个PropertyChangeSupport与PropertyChangeListener,于是就想看看用js能不能也实现一个,毕竟有时候js写的东西也需要一个观察者模式,于是就写了点东西,应该能派上用场。

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

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

    PropertyChangeListener

    private PropertyChangeSupport changes = new PropertyChangeSupport(this); ``` - **添加/移除监听器**:提供公共方法允许外部对象添加或移除监听器。 ```java public void addPropertyChangeListener...

    DesignPatternJava

    "DesignPatternJava"这个主题着重于如何在Java环境中应用设计模式,特别是其中的"PropertyChangeSupport"部分,这是一个与事件处理相关的模式。 "PropertyChangeSupport"是JavaBeans组件模型的一部分,主要用来支持...

    JavaBean - Bound属性

    3. **添加PropertyChangeSupport对象**:在JavaBean类中,添加一个`java.beans.PropertyChangeSupport`对象作为成员变量,用于管理属性更改事件。例如`private PropertyChangeSupport pcs = new ...

    JavaBeans程序开发从入门到精通

    private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); public String getText() { return text; } public void setText(String newText) { String oldValue = text; ...

    jface数据绑定

    private PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this); public Person() {} public void addPropertyChangeListener(String propertyName, PropertyChangeListener ...

    第四章 GEF框架.doc

    private PropertyChangeSupport listeners = new PropertyChangeSupport(this); public void addPropertyChangeListener(PropertyChangeListener l) { listeners.addPropertyChangeListener(l); } // 省略...

    GEF 入门操作

    private PropertyChangeSupport listeners = new PropertyChangeSupport(this); public void addPropertyChangeListener(PropertyChangeListener l) { listeners.addPropertyChangeListener(l); } ...

    JavaBeans教程(范例入门

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

    JavaBean 属性

    private PropertyChangeSupport changes = new PropertyChangeSupport(this); public void setString(String newString) { String oldString = this.ourString; this.ourString = newString; // 触发属性变化...

    《Java程序设计》模拟题带答案(B卷).docx

    `PropertyChangeSupport`类是用来实现属性更改通知的。正确答案是B,`PropertyChangeSupport()`。 6. 在Java中,`addPropertyChangeListener()`是用于添加属性改变监听器的方法,而`firePropertyChange()`则用来...

    JavaBeans教程.pdf

    - **PropertyChangeSupport**:在JavaBeans中,`PropertyChangeSupport`类用于管理`PropertyChangeEvent`。通过添加`PropertyChangeListener`,对象可以监听其他对象的属性变化。当Bound属性值改变时,`...

    第5章 JSP与JavaBean

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

    设计模式:观察者模式java和javabean

    例如,开发者可以使用`java.beans.PropertyChangeSupport`类来管理属性变更的监听器,当某个属性值改变时,通过`firePropertyChange()`方法通知监听器。 在实际应用中,观察者模式广泛用于各种场景,如GUI组件之间...

    java.pdf格式

    private PropertyChangeSupport changes = new PropertyChangeSupport(this); public void setOurString(String newString) { String oldString = ourString; ourString = newString; changes....

    Swing下的MVC demo

    - 数据绑定:Swing支持双向数据绑定,模型和视图之间的数据可以通过特定机制自动同步,如`PropertyChangeSupport`和`BoundPropertySupport`。 通过学习和理解Swing下的MVC模式,开发者可以更好地组织代码,提高代码...

    jgoodies-binding-2_6

    3. **PropertyChangeSupport**:JGoodies Binding扩展了Java内置的`java.beans.PropertyChangeSupport`,提供了一种更加简洁的方式来处理属性更改事件。开发者可以通过调用`bindProperty()`方法轻松地建立绑定关系。...

Global site tag (gtag.js) - Google Analytics