SwingWorker に ServerSocketChannel 接続プロセスがあります。Swing アプリケーション自体では、2 つの JLabel が (1) String (接続ステータス) と (2) int (接続されているクライアントの数) で更新される必要があります。以下は、「Detect Clients」JButton が接続プロセスを実行する前のアプリケーションのスクリーンショットです。ただし、EDT で複数の Swing コンポーネントを更新するために publish() と process() を行う方法がわかりません。これを達成する方法について誰かがガイダンスを持っていますか?
List<V>
が process() のパラメータなので、 としてみ<Object>
まし<V>
た。ただし、これは文字列/整数からオブジェクトへの変換、およびその逆の問題に遭遇するようです。
以下のデモ コードは、更新を公開する必要があるいくつかのポイントを示しています。
protected Void doInBackground() {
try {
// Omitted: obtain selector
ServerSocketChannel ssc = ServerSocketChannel.open() // could fail, may need
// to publish status
ssc.socket().bind(serverAddress); // could fail, may need to publish status
ssc.configureBlocking(false); // could fail, may need to publish status
// Omitted: register ssc
while (true) {
int count = sel.select(1000); // may need to publish for # of clients
// Omitted: rest of processing
}
} catch (IOException e) {
//handle error
}
}