Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

スレッドとSwing画面を同期させる方法

スレッドとSwing画面を同期させる方法を探していま
す。
Javaは最新版です。

やりたいことは、ソケットから受信したデータを
リアルタイムに画面に出すという事です。

SwingWorkerというクラスを見つけましたが、
時間のかかる処理をスレッド化して、
完了を待つことに特化している様に見えます。
これを上記の処理に無理やり適用すべきなのか、
もっと他に方法があるのかをお聞きしたいです。

.NETでいうところの、
Form.Invoke(MethodInvoker)
みたいなことがしたいです。
よろしくお願い致します。


2

回答

11975

閲覧

2件の回答

評価

0

SwingUtilities の invokeLater か invokeAndWait はいかがでしょうか?

評価

0

ありがとうございました。
invokeLater で解決しました。

class onThread implements Runnable
{
    @Override
    public void run()
    {
        // 別スレッド
        ThreadTimer.Sleep( 5000 );

        System.out.println( 
EventQueue.isDispatchThread() );
        SwingUtilities.invokeLater( new 
onComplete() );
    }

}

class onComplete implements Runnable
{
    @Override
    public void run()
    {
        // メインスレッド
        System.out.println( 
EventQueue.isDispatchThread() );

        _buttonRun.setText( "onComplete" 
);
    }
}

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。