我正在尝试用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中创建和执行...或者至少我想要就是这样。 :)
答案 0 :(得分:0)
问题不在于Window类。
您没有实例化jTextArea1。它是一个空值(一个空指针;因为对象的变量名实际上是指针)。
如果您要修改代码,请将其展开,这会显示错误的位置:
JTextArea myTextArea = window.jTextArea1;
myTextArea.setText("Test");
当然,由于这仍然被打破,这不是你想要的。您想要创建JTextArea(并且有ample examples online)。