Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在将ImageIcon放置到JButton之间获得延迟?_Java_Swing - Fatal编程技术网

Java 如何在将ImageIcon放置到JButton之间获得延迟?

Java 如何在将ImageIcon放置到JButton之间获得延迟?,java,swing,Java,Swing,placePiece方法正确地将ImageIcon放置在JButton上。我希望图像保持在那里一秒钟,然后用不同颜色的图像图标替换。以下代码的问题是红色图像图标从未出现。延迟发生,然后出现黑色图像图标。我想红色的图像图标出现,然后有一个1秒的延迟,然后黑色的出现。提前感谢您的帮助 placePiece(0, 3, "red"); //delay 1 second here try { Thread.sleep(1000); } catch (Exception exc) { } pl

placePiece方法正确地将ImageIcon放置在JButton上。我希望图像保持在那里一秒钟,然后用不同颜色的图像图标替换。以下代码的问题是红色图像图标从未出现。延迟发生,然后出现黑色图像图标。我想红色的图像图标出现,然后有一个1秒的延迟,然后黑色的出现。提前感谢您的帮助

placePiece(0, 3, "red");
//delay 1 second here
try 
{
    Thread.sleep(1000);
}
catch (Exception exc)  { }
placePiece(0, 3, "black");

我建议您使用Java的
javax.swing.Timer

这里有一个教程:

在计时器中,您可以通过在
speed
下的参数中设置间隔来轻松获得间隔,如下所示

int speed = 1000;  //delay of 1 second
timer = new Timer(speed, obj);

此外,当您使用
Thread.sleep(1000)
时,不能保证它总是延迟1秒

您可以使用like

placePiece(0, 3, "red");
int delay = 1000; 
 ActionListener taskPerformer = new ActionListener() {
  public void actionPerformed(ActionEvent evt) {
      placePiece(0, 3, "black");
  }
};
new Timer(delay, taskPerformer).start();

Thread.sleep()
不是swing的好方法。

swing
程序是一个单线程程序。与其使用
Thread.sleep()
尝试使用a作为旁白,为什么你会发现,每个程序都至少有一个答案,其中两个有两个,但其中只有一个被接受的答案?如果我得到的正确答案不到我问题的10%,我可能会寻找另一个地方提问(或提出更好的问题)。