我有以下类别:的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