我在 Swing 中有一个方法可以隐藏和显示一些按钮,称为setScreen(int stage)
,它将根据stage
参数隐藏或不隐藏某些按钮。我想调用该方法,然后等待几秒钟,然后再次调用它,就像在这段代码中一样:
... //Here stage has been assigned to some value
setScreen(stage);
if (stage != STAGE_TWO) {
sleep(WAIT_TIME * 1000);
stage = WELCOME;
setScreen(stage);
}
的代码setScreen(int stage)
是这样的:
void setScreen(int stage) {
switch (stage) {
case WELCOME:
screen.infoLabel.setText("Welcome!");
screen.startButton.setVisible(true);
break;
case STAGE_TWO:
screen.infoLabel.setText("We are in stage two!");
screen.startButton.setVisible(false);
break;
}
screen.validate();
}
其中 screen 是扩展 JFrame 的类的实例化。
这里的问题是第一个setScreen(stage)
永远不会显示,因为线程在提交更改之前进入睡眠状态。我曾尝试将 sleep 替换为 while 循环检查系统的时间,但效果是一样的。
**编辑:** 我在推荐的 StackOverflow 线程中发现了一些可能有用的 Swing Timer 信息。我将使用它并上传我所做的任何有用的进步。