用默认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()啊,为什么他会被执行的,如果我把该方法注释掉则会正常运行。很不解,请指教!!!
里面加了个测试该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()啊,为什么他会被执行的,如果我把该方法注释掉则会正常运行。很不解,请指教!!!
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货