2011-01-20 3 views
0

자바를 배우려고하는데 간단한 계산기를 만들려고합니다. 웬일인지 나는 TextField.setText() 위에서 NullPointerException를 얻고있다.JTextField.setText() throwing 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), IT 및 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); 

} 

그리고 내 두 번째 클래스 석회질의

:

여기 내 코드입니다. 내 System.out.println(result)4을 인쇄하지만 내 txtScreen.setText(""+result);은 널 포인터 예외를 발생시킵니다.

어떤 도움이 필요합니까?

답변

2

필드를 사용하기 전에 초기화해야합니다.

txtScreen = new JTextField(); 
+0

정확히 필요한 것입니다. 이제 txtScreen.setText (""+ result)를 얻을 수 없습니다. 텍스트를 설정합니다. 어떤 아이디어? –

+0

어떻게 코드를 변경 했습니까? 오류는 무엇입니까? – fmucar

+0

오류가 없습니다. 그것은 잘 실행, 그냥 doesnt txtScreen 변경. 내 var 결과를 5로 설정합니다. 결과를 인쇄하면 4가 인쇄되지만 txtScreen 텍스트는 변경되지 않습니다. 여기 내 두 줄을 : –

1

값으로 txtScreen을 초기화하지 않았습니다.

txtScreen = new JTextArea(); 

시도하면 초기화 코드를 게시 :

당신이 뭔가를해야합니다.

0

Java, 기존 릴리스에는 n 개의 기존 버그가 있습니다. 제 경우에는 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