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

  • 相关阅读:
    修改MSSql数据库名
    系统更新0x8DDD0007号错误解决方案
    win7密匙 win7永久激活工具
    Ps制作的立体字效果
    PS合成人物与风景
    word打不开_如何删除normal.dot
    查看自己的IP地址和网卡的MAC地址
    char varchar nvarchar区别
    配置节点简单使用
    线程相关的概念
  • 原文地址:https://www.cnblogs.com/tianzg/p/13048369.html
Copyright © 2011-2022 走看看