我已经实现了这个方法来改变actionPerformed方法正在使用的PropertyChangeSupport的值。但是,我遇到了NullPointerException,因为PropertyChangeSupport实例是 null 。谁能告诉我这个问题?以下是代码段。
对于PropertyChangeListener:
public synchronized void addPropertyChangeListener(PropertyChangeListener listener) {
if (pcs == null) {
pcs = new PropertyChangeSupport(this);
}
this.pcs.addPropertyChangeListener(listener);
}
对于活动:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Task oldTask = this.task;
this.task = new TaskImpl();
this.pcs.firePropertyChange(PROP_TASK, oldTask,this.task);
this.updateForm();
}
答案 0 :(得分:2)
这可能是因为在调用其addPropertyChangeListener()方法中实例化PropertyChangeSupport(pcs)的任何类之前,您正在调用this.pcs.firePropertyChange(PROP_TASK, oldTask,this.task);
。即,在调用顶部(如果有的话)之前调用底部代码块。您可以尝试在jButtonActionPerformed()方法中检查pcs是否为null并在那里实例化。
答案 1 :(得分:0)
似乎是构造函数中缺少的调用:
public TaskEditorPanel() {
if (null == this.taskMgr) {
this.taskMgr = Lookup.getDefault().lookup(TaskManager.class);
}
if (null != this.taskMgr) {
this.task = this.taskMgr.createTask();
}
initComponents();
this.updateForm();
// missed call
this.pcs = new PropertyChangeSupport(this);
}