我该如何在放置ImageIcon到JButton上时增加延迟?

3
方法placePiece可以正确地将ImageIcon放置在JButton上。我希望这个图像能够保留一秒钟,然后用另一个颜色的ImageIcon替换它。以下代码的问题是红色的ImageIcon从未出现。延迟发生,然后黑色的ImageIcon出现。我希望红色的ImageIcon出现,然后延迟1秒钟,然后出现黑色的Icon。非常感谢您的帮助。
placePiece(0, 3, "red");
//delay 1 second here
try 
{
    Thread.sleep(1000);
}
catch (Exception exc)  { }
placePiece(0, 3, "black");

Swing程序是单线程程序。 - SatyaTNV
1
不要使用 Thread.sleep(),尝试使用 Swing Timer - Frakcool
顺便问一下,为什么你提出了11个问题,每个问题都至少有一个答案,其中两个问题有两个答案,但是只有一个被接受的答案呢?如果我得到正确答案的比例不到10%,我可能会寻找其他提问场所(或者提出更好的问题)。 - Andrew Thompson
2个回答

2
我建议您使用Java的javax.swing.Timer。
这里有一个教程:https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html 在计时器中,您可以通过在参数下设置间隔来轻松获取间隔,如下所示:speed
int speed = 1000;  //delay of 1 second
timer = new Timer(speed, obj);

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

2
你可以使用类似于的方法
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 的良好实践。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接