2011-08-02 9 views
2

私はこのメソッドを実装して、actionPerformedメソッドで使用されているPropertyChangeSupportの値を変更しました。しかし、PropertyChangeSupportインスタンスがnullであるため、NullPointerExceptionが発生します。誰も私に問題を教えてもらえますか?以下はコードスニペットです。JavaのaddPropertyChangeListenerメソッド

public synchronized void addPropertyChangeListener(PropertyChangeListener listener) { 
    if (pcs == null) { 
     pcs = new PropertyChangeSupport(this); 
    } 
    this.pcs.addPropertyChangeListener(listener); 
} 

イベントの場合:のPropertyChangeListenerのために

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(); 
} 

答えて

2

それはおそらくだあなたが呼ばれてきた前にあなたがthis.pcs.firePropertyChange(PROP_TASK, oldTask,this.task);を呼び出しているので、何でもそののaddPropertyChangeListenerにによってPropertyChangeSupport(PCS)をインスタンス化するクラス() 方法。つまり、コードの最下位ブロックが呼び出される前に呼び出されています。 jButtonActionPerformed()メソッドでpcsがnullかどうかを確認し、そこでインスタンス化することができます。

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); 
}