2017-05-12 9 views
0

私はウェブソケットを使って通信するアプリケーションを書いています。私はJettyをWebsocketクライアントに使用しています。メッセージを送受信しています。私はメッセージを受け取るonMessageメソッドを持っていますが、それをうまく印刷することはできますが、MainUIスレッドにコールバックする方法はあまりよく分かりません。Java - swingUtlities.invokeLaterを別のクラスから使用していますか?

私はswingUtlitties.invokeLaterで読んでいましたが、私はそれが別のクラス&スレッドからどのように動作するのかよく分かりません。

Thxを

+1

'invokeLater()'はどのスレッドやクラスからでも動作するはずです。しかし、私はSwingとJetty/Webサーバーを混在させることに懸念があります。あなたは*確かにそれはあなたがしたいことですか?これは誤解ではないことを確認できるように、より高いレベルからアプリケーションを記述できますか? – markspace

+0

私のアプリケーションにはWebsocketメッセージをサーバーに送信するボタンがいくつかあります。ボタンにフィードバックを提供するために受け取ったメッセージを使用したいと思います(ボタン1がアクティブになっている場合は、ボタンの周りに緑色の境界線がある可能性があります)。 – jdm555

+0

OK、私はJettyがサーバー側にのみ関与していると仮定します。あなたは "桟橋のクライアント"と言って、それは私を混乱させる。 – markspace

答えて

0

別のスレッドで、あなたのソケット接続を実行するためにSwingWorkerを使用してください。 SwingWorkerには、利用可能になったときに結果をGUIに「公開」できる方法があります。

Event Dispatch Thread (EDT)がSwingでどのように機能するかに関する背景情報については、ConcurrencyのSwingチュートリアルのセクションをお読みください。 Tasks That Have Interim Rsultsのセクションには、使用例があります。SwingWorker

+0

SwingWorkerのように見えます。歓声メイト! – jdm555

+0

@ jdm555助けてくれてうれしいです。チェックマークをクリックして回答を「受け入れる」ことを忘れないでください。人々は問題が解決されたことを知ります。 (他の質問と同じです)。 – camickr

+0

します。私のソケットは別のクラスにあります。私は、ソケットクラスまたはMainUIクラスにSwingWorkerを実装していますか?私はMainUIクラスATMにそれを持っている、と私は私のソケットクラスで私のonMsgイベントから公開するメソッドにアクセスするかどうかはわかりません。 – jdm555

関連する問題