2015-04-03 97 views
1

我想访问状态,所以我可以附加值,但我的代码似乎不工作。请帮帮我。如何从一个类访问JTextArea到另一个类

public class NewClient extends JFrame implements ActionListener{ 


private static final int WIDTH = 600; 
private static final int HEIGHT = 400; 
public static JTextArea chat, event, cwindow, c2window, type, status; 

public NewClient(){ 

    status = new JTextArea(30,10); 
    status.setEditable(false); 
} 

这里的其他类

public class NewServer{ 


public static NewClient client; 

public static void main(String args[]){ 
     client.status.append("Online"); 
} 
+0

你从来没有实例化客户端。实际上你应该以'static'方式调用'status.append',而不是通过存储在变量中的实例来引用它。最后,您需要使用'EventQueue.invokeLater(Runnable)'将所有Swing代码发布到'EventQueue',并在[Event Dispatch Thread]上执行(https://docs.oracle.com/javase/tutorial /uiswing/concurrency/dispatch.html)。 – 2015-04-03 06:00:00

回答

0

有两件事情,这里要注意:

你必须创建对象调用构造函数,否则你 将在下面打的NullPointerException line

client.status.append("Online"); 

所以,解决方法是创建一个对象,并指定值:

client = new NewClient(); 
client.status.append("Online"); 

status静态变量不需要通过对象调用。因此, 而不是像下面的分配值:

client.status.append("Online"); 

您可以直接调用变量使用类名:

client = new NewClient(); 
NewClient.status.append("Online"); 

如果上面的注意,我们创建新的对象为NewClient,使status文本区域的值将作为NewClient的构造函数的一部分进行初始化。