JavaBeans的PropertyChangeListener系列类用法

类图如下:

类图


顺序图如下:

顺序图


示例代码如下:

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";

}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在JSP中创建JavaBeans的子需要遵循以下步骤: 1. 创建一个JavaBeans的父,并定义其属性和方法。 2. 创建一个Java,继承JavaBeans的父。 3. 在Java中重写JavaBeans的父中的方法,并添加新的方法。 4. 在JSP页面中使用<jsp:useBean>标签导入JavaBeans的子。 5. 在JSP页面中使用<jsp:setProperty>标签设置JavaBeans的子的属性值。 6. 在JSP页面中使用<jsp:getProperty>标签获取JavaBeans的子的属性值。 7. 在JSP页面中使用JavaBeans的子中定义的方法。 示例代码如下: JavaBeans的父: ``` public class MyJavaBean { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } ``` JavaBeans的子: ``` public class MyJavaBeanSubclass extends MyJavaBean { private String address; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "MyJavaBeanSubclass{" + "name='" + getName() + '\'' + ", age=" + getAge() + ", address='" + address + '\'' + '}'; } } ``` 在JSP页面中使用JavaBeans的子: ``` <jsp:useBean id="myBean" class="com.example.MyJavaBeanSubclass" scope="page"/> <jsp:setProperty name="myBean" property="name" value="Alice"/> <jsp:setProperty name="myBean" property="age" value="25"/> <jsp:setProperty name="myBean" property="address" value="123 Main St."/> <p>Name: <jsp:getProperty name="myBean" property="name"/></p> <p>Age: <jsp:getProperty name="myBean" property="age"/></p> <p>Address: <jsp:getProperty name="myBean" property="address"/></p> <p>My bean: <jsp:scriptlet>out.println(myBean);</jsp:scriptlet></p> ``` 输出结果: ``` Name: Alice Age: 25 Address: 123 Main St. My bean: MyJavaBeanSubclass{name='Alice', age=25, address='123 Main St.'} ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值