2011-01-20 16 views
0

私はJavaを学ぼうとしていますが、私は単純な電卓を作ろうとしています。何らかの理由で私はTextField.setText()NullPointerExceptionを得ています。JTextField.setText()throw NullPointerException

//sets values from calc GUI to local class vars 
public void setVals(double n1, double n2, char c){ 
    NUM1=n1; 
    NUM2=n2; 
    CHAR=c; 
} 

//do the math 
public double doCalc(){ 
    switch (CHAR){ 
     case '+': 
      RESULT = NUM1+NUM2; 
      break; 
    } 

    return RESULT; 
} 

わかりましたが...ので、私はそれを送信values(2,2)、それとc.doCalc()戻り4

public static void main(String args[]) { 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new CalcUI().setVisible(true); 
     } 
    }); 

    Calc c = new Calc(); 
    c.setVals(2,2,'+'); 
    result = c.doCalc(); 
    //need to setText(String.valueOf(c.doCalc())) 
    txtScreen.setText(""+result); 
    System.out.println(result); 

} 

そして、私の第二のクラスのCalcで

は、ここに私のコードです。私のSystem.out.println(result)4を印刷しますが、私のtxtScreen.setText(""+result);はnullポインタの例外を引き起こします。

助けが必要ですか?

答えて

2

フィールドを初期化してから使用する必要があります。

txtScreen = new JTextField(); 
+0

これはまさに私が必要としていたものです。今私はtxtScreen.setText( "" + result)を得ることができません。テキストを設定します。何か案は? –

+0

あなたはどのようにコードを変更しましたか、あなたは何を得ていますか? – fmucar

+0

エラーはありません。それはうまく動作し、ちょうどtxtScreenを変更しません。私は私のvar結果を5に設定します。結果をプリントアウトすると、4が出力されますが、txtScreenのテキストは変更されません。ここに私の2つの行があります: –

1

値でtxtScreenを初期化していません。

次のようなものが必要です。

txtScreen = new JTextArea(); 

あなたはそれを初期化コードを投稿してみてくださいを。

0

Javaにはいくつかのバグが存在し、さまざまなリリースがあります。私の場合、私はbuild 1.6.0_25-b06です。私がJTextPane.setText()に渡す文字列は間違いなくnullではありませんが、setText()の中のNPEを取得します - 特にリロードしてください。それはhtmlで、手間がかかりますが、テキストを少し変更するとNPEが防止されますが、不安感が残ります。

タイトルの下に回避策があります。HTMLEditorKit throws NullPointerException when reloaded.回避策は、setText()が私のために働く前に、(未使用の)ParserDelegate{}をインスタンス化します。 http://forums.oracle.com/forums/thread.jspa?threadID=1773568&tstart=0

関連する問題