2012-05-04 5 views
3

プログラム内で常時実行されている並列機能が必要です。 私は正しいと思っているのかどうかはわかりませんが、私がしたいのは、サーバーから情報を取得しながら、常にTextAreaを更新するコードを作ることです。Javaで関数を持たないスレッドを作成できますか?

私はRMIを使用しています。

MainClass内でスレッド関数を作成して、それを常時実行できますか?

また、別のクラスでTextAreaを更新するスレッドを作成するにはどうすればよいですか? TextAreaをどうやって共有しますか?

+2

あなたが "実現" とはどういう意味ですか? –

+0

彼は** update **、_actualize_ではないことを意味します(スペイン語/イタリア語/フランス語などからの翻訳が悪いかもしれません) –

答えて

3

わかっていれば、TextAreaはJTextAreaを意味し、MainClassはアプリケーションのエントリポイントであると仮定します。

このようなことを防ぐにはどうすればよいですか?

public class Updater implements Runnable { 
    private JTextArea textArea; 

    public Updater(JTextArea textArea){ 
     this.textArea = textArea; 
    } 

    @Override 
    public void run(){ 
     SwingUtilities.invokeLater(new Runnable(){ 
      public void run(){ 
          //do what you've got to do.... 
       textArea.setText("New Text"); 
      } 
     }); 
    } 

} 

そして、このようなあなたの "MainClass" 何かで:

public static void main(String[] args) { 

    Thread myThread = new Thread(new Updater(myTextArea)); 
    myThread.start(); 

} 
+1

'myThread.setDaemon(true)'を呼び出すことによってスレッドをデーモンスレッドとして定義する必要があります。 。 –

+0

@a_horse_with_no_name +1:良い点ですが、これがSwingアプリケーションの場合、実行中のスレッドをすべて終了させる点でSystem.exit()で終了する可能性があります。 –

+0

それだけです!スレッドmyThread = new Thread(新しいアップデータ(myTextArea))を使用できるかどうかはわかりませんでした。ありがとう! – fhbeltrami

関連する問題