0

これにアプローチする方法さえわかりませんが、いくつかの読書と多くの試み(失敗)を行った後、コミュニティに助けを求めることにしました. フォーム A が開き、ユーザーにフォーム B が開くのを遅らせる時間を入力するように求めます。現在、私はsleep()これを行うために使用していますが、別のダイアログ ボックスを挿入して、ユーザーがタイマーを中断し、タイマーが切れる前にフォーム B を表示できるようにしたいと考えています。これを行う正しい方法はwait()andnotify()を使用することだと思いますが、生産者モデルと消費者モデルの多数の例に頭を悩ませているようには見えません. どんな助けでも大歓迎です。

4

2 に答える 2

0

最も簡単な方法は、このようなことをすることです

Thread a = new Thread(new Runnable(){
   public void run(){
      //do whatever display
      try{
        Thread.sleep(timeToShowBform);
      }
      catch(InterruptedException ex){
         //interrupted.
      }finally{
      //show form B
      SwingUtilities.invokeLater(...)

   }
});

class BRunnable implements Runnable{
public void run(){
 //if clicked, then this runnable is called.
 a.interrupt();
}
}

スレッドaが でブロックされていると仮定しsleep、それを呼び出すa.interrupt()と、 が起動しますa

于 2013-06-12T06:16:10.563 に答える