0

我正在尝试学习Java,并且正在尝试制作一个简单的计算器。出于某种原因NullPointerException,我的TextField.setText().

这是我的代码:

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 中:

    //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。我的System.out.println(result)打印4但我txtScreen.setText(""+result);导致空指针异常。

有什么帮助吗?

4

3 回答 3

2

您需要在使用之前初始化该字段。

 txtScreen = new JTextField();
于 2011-01-20T17:23:30.370 回答
1

您尚未使用值初始化 txtScreen。

你需要类似的东西:

txtScreen = new JTextArea();

尝试在初始化它的位置发布代码。

于 2011-01-20T17:21:25.720 回答
1

Java 中存在 n 个现有错误,各种版本。就我而言,我有build 1.6.0_25-b06. 我传递给的字符串JTextPane.setText()绝对不是空的,但我在其中得到了一个setText()NPE——尤其是在重新加载时。它是 html,并且很棘手,但稍微更改文本会阻止 NPE,但会留下不安的感觉。

有一个解决方法发布在标题The workaround在为我工作 之前HTMLEditorKit throws NullPointerException when reloaded.实例化一个(未使用) 。http://forums.oracle.com/forums/thread.jspa?threadID=1773568&tstart=0ParserDelegate{}setText()

于 2011-05-05T20:34:16.887 回答