-1

对于这样一个新手问题,我很抱歉,我正在尝试在两个JText更改颜色的字段之间设置延迟,即:

 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); 在主线程上,一旦睡眠终止,页面的渲染就会完成,你会看到两个框都在改变它们的颜色。

如果 sleep 运行在与主线程不同的另一个线程中,则 mainThread 渲染将在新线程启动后立即完成,您可以看到第一个框改变了他的颜色。执行完 sleep 后,box2 会改变他的颜色。对不起我的英语,我希望你能理解:)

于 2013-03-27T14:03:20.550 回答