• 详解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

  • 相关阅读:
    图片不能显示
    Lambda表达式where过滤数据
    存储文本到一个文件里
    获取用户临时文件夹路径
    判断某一个字符串是否存在另一个字符串中
    使用反射为特性赋值
    字符串与数据流之间的转换
    控制台应用程序获取计算机名
    重复输出字符或字符串
    使用HashSet<>去除重复元素的集合
  • 原文地址:https://www.cnblogs.com/tianzg/p/13048369.html
Copyright © 2020-2023  润新知