私は次のクラスを持っています:
- メインサーバー
- TCPサーバー
- UDPサーバー
GUI が初期化されている MainServer クラスから、TCPServer および UDPServer クラス (開始) の新しいインスタンスを作成します。この GUI には、ログ情報 (エラー、ステータスなど) を表示するために TCP または UDP クラスのいずれかが更新する必要があるtextAreaがあります。私はいくつかの検索を行い、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
ようになります:
スレッド「AWT-EventQueue-0」での例外 java.lang.NullPointerException MultithreadedBarcodeReader.MultithreadedBarcodeReaderServer$2.run( MultithreadedBarcodeReaderServer.java:68) java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) java.awt.EventQueue.dispatchEventImpl(EventQueue.java:682) で java.awt.EventQueue.access$000 (EventQueue.java:85) で java.awt.EventQueue$1.run(EventQueue.java:643) で java.awt.EventQueue$1.run(EventQueue.java:641) で