-3

javaのswingworkerclassでループ内にテキストを追加したい。例:

while(true)
{
     mytextarea.append("sometext");
     if(some_condition)
     {break;}
}

テキストエリアのすべてのアップテードを見たいので、swingworkerでこれが欲しいです。このコードでは、プロセスが完了したときにのみ更新が表示されます。

別の状況でのスイングワーカーのサンプルは必要ありません。ここにコードを教えてください。ありがとうございます。

4

1 に答える 1

0

SwingWorker はここにありません。コードは EDT で実行されていないため、更新は表示されません。SwingUtilities.invokeLater(...) を使用して、EDT でコードを実行できます。ただし、EDT で while ループ全体を実行しないでください。ブロックされ、更新やイベント (再描画、マウスクリック) が行われなくなります。簡単なコード例を次に示します。

    while(true) {
        SwingUtilities.invokeLater(new Runnable{
            public void run() {
                textfield.setText(....);
            }
         });
         if(condition) break;
     }

詳細については、http://java.sun.com/products/jfc/tsc/articles/threads/threads1.htmlまたはこの本を参照してください: http://filthyrichclients.org

于 2012-08-16T07:30:45.273 に答える