JavaBeans的PropertyChangeListener系列类用法

来源:互联网 发布:mac什么浏览器最好用 编辑:程序博客网 时间:2024/05/21 06:02

类图如下:

类图


顺序图如下:

顺序图


示例代码如下:

import java.beans.PropertyChangeEvent;import java.beans.PropertyChangeListener;import java.beans.PropertyChangeSupport;public final class PropertyChanger{   public PropertyChanger()   {      // TODO Auto-generated constructor stub      pcs = new PropertyChangeSupport(this);      pcs.addPropertyChangeListener(new UnnamedPropertyChangeListener(this));      pcs.addPropertyChangeListener("name", new PropertyChangeListenerWithName(this));   }   /**    * @param args    */   public static void main(String[] args)   {      // TODO Auto-generated method stub      PropertyChanger pc = new PropertyChanger();      pc.run();   }   public void run()   {      setName("virus");      setId(1);   }   public String getName()   {      return name;   }   public void setName(String name)   {      String oldName = this.name;      this.name = name;      pcs.firePropertyChange("name", oldName, name);   }   public int getId()   {      return id;   }   public void setId(int id)   {      int oldId = this.id;      this.id = id;      pcs.firePropertyChange("id", oldId, id);   }   private PropertyChangeSupport pcs;   private String name = "world";   private int id = 0;}class UnnamedPropertyChangeListener implements PropertyChangeListener{   /**    * @param changer    */   public UnnamedPropertyChangeListener(PropertyChanger changer)   {      super();      this.changer = changer;   }   @Override   public void propertyChange(PropertyChangeEvent evt)   {      // TODO Auto-generated method stub      if (evt.getSource() == changer)      {         if (evt.getPropertyName().equals("name") || evt.getPropertyName().equals("id"))         {            System.out.println("My new " + evt.getPropertyName() + " is: " + evt.getNewValue() + ".");         }         else         {            System.out.println("Unlnown property.");         }      }   }   private PropertyChanger changer;}class PropertyChangeListenerWithName implements PropertyChangeListener{   /**    * @param changer    */   public PropertyChangeListenerWithName(PropertyChanger changer)   {      super();      this.changer = changer;   }   @Override   public void propertyChange(PropertyChangeEvent evt)   {      // TODO Auto-generated method stub      if (evt.getSource() == changer)      {         if (evt.getPropertyName().equals(propName))         {            System.out.println("Hello, " + evt.getNewValue() + " !");         }         else         {            System.out.println("Unlnown property.");         }      }   }   private PropertyChanger changer;   private final String propName = "name";}


原创粉丝点击