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

  • 相关阅读:
    [转][Silverlight] aspx页面上传递参数给Silverlight插件的方法
    [C#] 利用cmd远程网内机器,实现文件互传
    [CSS] 对于一个连在一起很长的字符串,在页面上控制换行
    [CSS] 设置input和img在同一行上
    [MySQL] 记MySQL与MS SQL的几点不同
    [JQuery] 利用jquery的ajax调用后台的WebService公共方法和网页的静态方法
    【计算机组成原理】——计算机发展简史
    【计算机组成原理】——计算机的分类
    【JavaScript高级程序设计4th】第1章 什么是JavaScript——总结
    css重置样式表(两种版本)
  • 原文地址:https://www.cnblogs.com/tianzg/p/13048369.html
Copyright © 2011-2022 走看看