2015-04-03 314 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的構造函數的一部分進行初始化。

相關問題