我有以下類別:的Java SwingUtilities.invokeLater更新文本區
- MainServer
- TCPSERVER
- UDPServer
我創建MainServer TCPSERVER和UDPServer類(啓動)的新實例類,我的GUI被初始化。 在這個圖形用戶界面中,我有一個textArea,要麼TCP或UDP類需要更新以顯示日誌信息(錯誤,狀態等)。我做了一些搜索,我知道我可能需要在MainServer中使用EDT,但不知道如何從TCPServer或UDPServer訪問MainServer類中的此對象。現在我只能打印到控制檯,這是不可取的。 如何從TCPServer訪問MainServer.printlog?或Mainserver.textArea對象? 如果我從TCPServer或UDPServer創建一個新的MainServer實例,這似乎不起作用。
這是我在MainServer類功能:
public void printLog (final String log, final int level) {
SwingUtilities.invokeLater(
new Runnable()
{
public void run()
{
if (level == 1)
textArea.append("INFO\t" + log);
if (level == 2)
textArea.append("WARN\t" + log);
if (level == 3)
textArea.append("ERROR\t" + log);
}
}
);
}
編輯:我試圖創建的MainServer
和訪問printLog
一個新的實例,但我得到:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at MultithreadedBarcodeReader.MultithreadedBarcodeReaderServer$2.run( MultithreadedBarcodeReaderServer.java:68) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:682) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:643) at java.awt.EventQueue$1.run(EventQueue.java:641)
這部分看起來不錯;作爲參考,有一個工作示例[這裏](http://stackoverflow.com/a/3245805/230513)。 – trashgod
正如你所說,「這似乎沒有工作」,請更精確地*你正在觀察什麼*實際*問題*。 – MvG
嗨MvG,我有6個不同的類文件:* MainServerInit,* MainServer,* TCPServer * UPDServer *解碼*結果。在解碼和結果我處理任何我從我的客戶獲得。但MainServerInit類初始化MainServer,它啓動GUI幷包含printLog方法。在這個階段,當我初始化一個也啓動TCP和UDP服務器的MainServer實例時,我不確定訪問MainServer服務器的哪個方法或sintaxis = new MainServer; server.printLog(「TCP Server()Error」,2);來自TCP,UDP,解碼等。 – spicyramen