在java程序中设置延迟

在java程序中设置延迟,java,delay,Java,Delay,对于这样一个新手问题,我很抱歉,我正在尝试在两个JText字段之间设置一个更改颜色的延迟,即: box1.setBackground(Color.yellow); box2.setBackground(Color.red); 我尝试使用: try { Thread.sleep(1000); }catch(InterruptedException ex) { Thread.currentThread().interrupt(); } 但是,使用此选项时,延迟会立即发生,并

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

 box1.setBackground(Color.yellow);
 box2.setBackground(Color.red);
我尝试使用:

try {
    Thread.sleep(1000); 
}catch(InterruptedException ex) {
    Thread.currentThread().interrupt();
}
但是,使用此选项时,延迟会立即发生,并且两种颜色仅在延迟后更改。提前感谢您对我的情况所做的任何说明:)

如果执行Thread.sleep(1000);在主线程上,一旦睡眠终止,页面的呈现就会完成,您将看到两个框都在改变颜色


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

在代码的上下文中,你在哪里调用
Thread.sleep(1000)
?你必须在
setBackground()
调用之间调用它,这就是你调用它的地方吗?是的,当我在两个颜色变化之间调用它时,它忽略第一个变化,运行延迟,然后立即调用两个颜色变化。知道吗,杰克,这非常有效,你能解释一下这段代码中发生了什么吗?
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();