zoukankan      html  css  js  c++  java
  • 详解java中的PropertyChangeSupport与PropertyChangeListener

    java中的PropertyChangeSupport与PropertyChangeListener配合使用能够实现,绑定属性会在属性值发生变化时,通知所有相关的监听器。

    javaBean:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    package com.wang.test.property;
      
    import java.beans.PropertyChangeListener;
    import java.beans.PropertyChangeSupport;
      
    public class TestBean {
      
      protected final PropertyChangeSupport support = new PropertyChangeSupport(this);
        
      private String str;
        
      public String getStr() {
        return str;
      }
      
      public void setStr(String str) {
        support.firePropertyChange("str", this.str, str);
        this.str = str;
      }
        
      public void addPropertyChangeListener(PropertyChangeListener listener) {
        support.addPropertyChangeListener(listener);
      }
        
      public void removePropertyChangeListener(PropertyChangeListener listener) {
        support.removePropertyChangeListener(listener);
      }
    }

    client:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    package com.wang.test.property;
      
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
      
    public class PropertyChangeSupportTest {
      
      public static void main(String[] args) { 
          
        TestBean test = new TestBean();
        test.setStr("ddddd");
        test.addPropertyChangeListener(new PropertyChangeListener1());
        test.setStr("yyyy");
          
        //test.addPropertyChangeListener(new PropertyChangeListener2());
        //test.setStr("hhhhhhf");
      
         
      public static class PropertyChangeListener1 implements PropertyChangeListener{
      
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
          System.out.println( "1: " + evt.getPropertyName() + "  " + evt.getNewValue() + "  " + evt.getOldValue());
            
        }
      }
        
      public static class PropertyChangeListener2 implements PropertyChangeListener{
      
        @Override
        public void propertyChange(PropertyChangeEvent evt) {
          System.out.println( "2: " + evt.getPropertyName() + "  " + evt.getNewValue() + "  " + evt.getOldValue());
            
        }
      }
    }

    执行PropertyChangeSupportTest 该类的mian方法

    1:未打开注释的输出结果:

                1: str yyyy ddddd

    2:打开注释的输出结果:

                1: str yyyy ddddd

                1: str hhhhhhf yyyy

                2: str hhhhhhf yyyy

  • 相关阅读:
    从安装、管理到防御_阿里云安骑士全向测评
    云架构师前(钱)景这么好_我们该如何转型?这有两位阿里云云架构总监多年心得
    Infrastructure_as_Code——Kubernetes一键编排实践
    大中华地区(含港澳台)空气质量接口参加阿里云API_as_a_Service_大赛
    E-MapReduce集群启停HDFS/YARN服务
    云服务器ECS还原安全组规则功能介绍_安全组规则的备份与还原
    E-MapReduce集群中HDFS服务集成Kerberos
    FastReport中如何加入自定义函数
    查找算法总结
    八大排序算法总结
  • 原文地址:https://www.cnblogs.com/tianzg/p/13048369.html
Copyright © 2011-2022 走看看