我在NetBeans中工作。在单击切换按钮后,我想做一个简单的3-2-1倒数,在按钮上显示倒数。我对使用Java中与时间相关的任何事物都有些陌生,但是进行这种简单倒计时的最简单方法似乎只是使用Thread.sleep(),如下所示。该程序应等待3秒钟,然后将按钮的文本打印到命令行,但是按钮本身的文本不会改变。知道为什么会发生这种情况以及如何解决?谢谢!

jToggleButton1.setText("3...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}
jToggleButton1.setText("2...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}
jToggleButton1.setText("1...");
System.out.println(jToggleButton1.getText());
try{
    Thread.sleep(1000);
}
catch(InterruptedException e){}

最佳答案

您的问题是您正在事件分配线程中执行所有操作。因此,UI没有机会更新。您需要使用SwingWorker或更好的swing计时器(具有Action回调的计时器)才能正确执行此操作

10-05 19:18