使用Java在GUI中执行程序时出现NullPointerException

时间:2014-01-25 14:06:36

标签: java swing user-interface

我正在尝试用Java创建我的第一个使用GUI的程序,我的问题很小。我使用NetBeans创建了一个窗口,现在我正在创建另外两个类 - 一个名为GUI,它将控制我的窗口,当然还有Main。

以下是两者的代码:

GUI:

package client;

import resources.gui.*;

public class GUI {
    public Window window; 
    public GUI(){
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                window=new Window();
                window.setVisible(true);
            }
        });
    }
    public void Show(){
        window.jTextArea1.setText("Test");
    }
}

主:

package client;

public class Main {

    static GUI gui;
    public static void main(String[] args) {
        gui=new GUI();
        gui.Show();
    }
}

当然还有一个名为Window的扩展JFrame。

我的问题是,在执行它时,行中有java.lang.NullPointerException试图修改jTextArea1。我想那是因为当程序试图使用这个函数时没有Window类 - 它还没有被创建“感谢”invokeLater。

如果我是对的,我该如何修复它?没有办法将该函数放入run(),因为在最终版本中它不是一个函数 - 它将是独立于GUI的Thread类,它将在Main中创建和执行...或者至少我想要就是这样。 :)

1 个答案:

答案 0 :(得分:0)

问题不在于Window类。

您没有实例化jTextArea1。它是一个空值(一个空指针;因为对象的变量名实际上是指针)。

如果您要修改代码,请将其展开,这会显示错误的位置:

JTextArea myTextArea = window.jTextArea1;
myTextArea.setText("Test");

当然,由于这仍然被打破,这不是你想要的。您想要创建JTextArea(并且有ample examples online)。