我有一个JFrame
我想在其上模拟倒计时(如火箭发射)。setVisible(false)
因此,我通过隐藏各种控件 ( ) 并显示带有文本的 a来设置框架JLabel
(这是应该倒计时的文本:3、2、1、Go)。
上面的文字JLabel
从“3”开始。我的意图是让程序的执行等待 1 秒,然后将文本更改为“2”,再等一秒,更改为“1”,等等)。最后,我隐藏JLabel
并重新显示所有控件,一切正常进行。
我在做什么是行不通的。它似乎在等待正确的时间,完成后,我的 JFrame 看起来很棒并且按预期工作。但是在倒计时方法的 4 秒内,我看到的只是一个白色的 JFrame。不是我想要的 3、2、1。
这是我的代码。谁能看到我做错了什么?谢谢!
public void countdown() {
long t0, t1;
myTest.hideTestButtons(true);
myTest.repaint();
t0 = System.currentTimeMillis();
do {
t1 = System.currentTimeMillis();
} while ( (t1 - t0) < 1000);
myTest.TwoSeconds();
myTest.repaint();
t0 = System.currentTimeMillis();
do {
t1 = System.currentTimeMillis();
} while ( (t1 - t0) < 1000);
myTest.OneSecond();
myTest.repaint();
t0 = System.currentTimeMillis();
do {
t1 = System.currentTimeMillis();
} while ( (t1 - t0) < 1000);
myTest.Go();
myTest.repaint();
t0 = System.currentTimeMillis();
do {
t1 = System.currentTimeMillis();
} while ( (t1 - t0) < 1000);
myTest.hideTestButtons(false);
myTest.repaint();
}
public void TwoSeconds() {
lblCountdown.setText("2");
}
public void OneSecond() {
lblCountdown.setText("1");
}
public void Go() {
lblCountdown.setText("Go!");
}