SwingWorker (doInBackground メソッド内) をコードの特定のポイントに到達させ、そこで停止し、特定の変数を監視し、変数が許容値に変化したときに再開する方法はありますか?
私はこれを行うことができることを知っています:
do {
Thread.sleep(500);
} while (variable == false);
しかし、それは非常に醜い方法です...
助言がありますか?
編集:だから待って、それを通知してください...しかし、いくつかのチュートリアルを読んだ後でも、それを実装する方法がまったくわかりません...
だからここに私の現在の状況があります:
doInBackground メソッドで何かを行う SwingWorker があります。
doInBackground()
{
doSomething();
//BLOCK (PAUSE) HERE
doSomethingElse();
}
反対側には、doSomething(); のときにトリガーされるリスナーがアタッチされたオブジェクトがあります。実行されます。
doSomethingElse() は、リスナーと同様のものにアクセスして変更するため、互いに干渉します。
したがって、私の目標は、ブロックを doInBackground() コードから持ち上げるコード行をリスナーに追加することです。リスナーを持つクラスは次のようになります。
public class myClass extends JPanel()
{
addComponentListener(new ComponentAdapter()
{
@Override
public void componentResized(ComponentEvent arg0)
{
doThings();
//LIFT BLOCK AND LET THE SWINGWORKER CODE CONTINUE
}
}
}
したがって、操作の順序は次のようになります。
doSomething();
doThings();
doSomethingElse();
また、SwingWorker からリスナーにアクセスすることはできますが、その逆はできません (ただし、機能させることはできるかもしれません)。
最後にもう 1 つ: Listener は SwingWorker によってのみ呼び出されるのではなく、SwingWorker をインスタンス化する必要さえない場合でも、他のソース (ユーザーなど) から呼び出すことができます。