-1

このような初心者の質問で申し訳ありませんJText。色が変わる2つのフィールドの間に遅延を設定しようとしています。

 box1.setBackground(Color.yellow);
 box2.setBackground(Color.red);

私は使用しようとしました:

try {
    Thread.sleep(1000); 
}catch(InterruptedException ex) {
    Thread.currentThread().interrupt();
}

ただし、これを使用すると、遅延が即座に発生し、両方の色は遅延後にのみ変化します。私の状況に光を当ててくれてありがとう:)

4

1 に答える 1

1
box1.setBackground(Color.yellow);
new Thread(new Runnable(){
   public void run(){
       try{
          Thread.sleep(1000);
       }catch(InterruptedException ex){
          ex.printStackTrace();
       }
       box2.setBackground(Color.red);
   }
}).start();

Thread.sleep(1000);を実行した場合。メインスレッドでは、スリープが終了するとページのレンダリングが行われ、両方のボックスの色が変わります。

メインスレッドとは別のスレッドでスリープが実行されている場合、mainThreadレンダリングは新しいスレッドが開始された直後に実行され、最初のボックスが彼の色を変更しているのがわかります。スリープが実行された後、box2は彼の色を変更します。私の英語でごめんなさい、私はあなたがそれを理解できることを願っています:)

于 2013-03-27T14:03:20.550 に答える