【发布时间】:2014-06-18 17:32:23
【问题描述】:
我在 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 信息。我会使用它并上传我所做的任何有用的改进。
【问题讨论】:
-
Swing 计时器或 SwingUtils.invokeLater 调用
-
是的。我可能在这里涵盖了您需要的内容:stackoverflow.com/questions/24270226