2014-01-25 43 views
0

我试图在使用GUI的Java中创建我的第一个程序,并且出现小问题。我使用NetBeans创建了一个窗口,现在我创建了两个类 - 一个叫做GUI,它将控制我的窗口,当然还有Main。在Java中使用GUI执行程序期间出现NullPointerException

这里有两个代码:

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(); 
    } 
} 

当然还有是一个扩展JFrame的另一个名为窗口。

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

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

+0

你在哪里创建JTextArea1?如果你不创造它,你期望它存在吗?它是空的,因此你得到NullPointerException(因为程序试图调用null对象上的setText方法)。 –

回答

0

问题不是Window类。

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

如果要修改代码,展开出像这样,这将告诉你在哪里的错误是:

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

当然,因为这仍然是断开的,这不正是你想。你想创建JTextArea(并且有ample examples online)。