2011-09-10 11 views
2

問題については、どのように - Javaのスレッド他のスレッドへのアクセス(SWING)

私はメインアプリケーションからのスレッドを起動し、プロセスAはバックグラウンドで実行言うことができますし、それがだと言って、スレッドの外にテキストボックスを更新実行を停止した時点で完了しました。

実行スレッド内のスレッド外のテキストボックスを更新するコードを作成するにはどうすればよいですか?

答えて

3

テキストボックスへのポインタが必要です。 スレッドできませんテキストボックスを更新 - スイングでは、すべてのGUIコマンドはイベントディスパッチスレッドから実行する必要があります。

あなたがしなければならない

: ちょうどヒント:

SwingUtilities.invokeLater (new Runnable(){ 
    public void run(){ 
     // draw textbox code 
    } 
}); 

これは、イベントディスパッチスレッド

EDITによって実行キューにオブジェクトを追加する新しいRunnableを(){内部 .. 。}は匿名クラスであるため、外部スコープの正規変数を使用することはできません。変数をfinalとして定義するか、getterを使用してテキストボックスを取得する(または静的なフィールドを介してアドレス指定する)必要があります。

+0

フォームに既に描画されているテキストボックスプロパティを呼び出すにはどうすればよいですか? – Melvin

+0

ああ。先端に感謝します。私はrunnableクラス内の静的な参照を作成し、GUIからテキストボックスをブリッジします。 のようなもの:Test.txt = jTextArea1 テストの実行中に、私はちょうどテキストを設定するためにtxt.setText()を使用し、それは動作します。 – Melvin

+0

静的である必要はありませんが、(匿名と名前付きの)内部クラスは外部クラスの状態にアクセスできます。 – jackrabbit

関連する問題