用默认jb中的bean模版做了个bean
里面加了个测试该bean的main方法
代码如下
package untitled46;import java.awt.*;
import javax.swing.JTextField;
import java.beans.*;public class Bean1 extends JTextField {
  BorderLayout borderLayout1 = new BorderLayout();
  private String one;
  private transient PropertyChangeSupport propertyChangeListeners = new PropertyChangeSupport(this);  public Bean1() {
    try {
      jbInit();
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }
  private void jbInit() throws Exception {
    this.setLayout(borderLayout1);
  }
  public String getOne() {
    return one;
  }
  public void setOne(String one) {
    String  oldOne = this.one;
    this.one = one;
    propertyChangeListeners.firePropertyChange("one", oldOne, one);
  }
  public synchronized void removePropertyChangeListener(PropertyChangeListener l) {
    super.removePropertyChangeListener(l);
    propertyChangeListeners.removePropertyChangeListener(l);
  }
  public synchronized void addPropertyChangeListener(PropertyChangeListener l) {
    super.addPropertyChangeListener(l);
    System.out.println(propertyChangeListeners);
    propertyChangeListeners.addPropertyChangeListener(l);
  }
  public static void main(String[] args){
    new Bean1();
  }
}
运行代码抛出异常--证明propertyChangeListeners还没实例化,后来跟踪调试
发现bean对象初始化之前首先执行addPropertyChangeListener()--这也难怪propertyChangeListeners没有实例化了。但这点让我很不解,我没有显示的去调用
addPropertyChangeListener()啊,为什么他会被执行的,如果我把该方法注释掉则会正常运行。很不解,请指教!!!