问题描述
private int seconds = 5;
private SpeedMathGo speedMathGo;
Timer timeRemaining = new Timer();
TimerTask task = new TimerTask() {
public void run() {
if (speedMathGo.turn == "X") {
seconds = 5;
seconds --;
if (seconds == 0) {
speedMathGo.turn = "O";
}
}
timerLabel.setText("Time remaining: " + seconds + "s");
if (speedMathGo.turn == "O") {
seconds = 5;
seconds --;
if (seconds == 0) {
speedMathGo.turn = "X";
}
}
timerLabel.setText("Time remaining: " + seconds + "s");
}
};
public void time() {
timeRemaining.scheduleAtFixedRate(task,5000,1000);
}
这部分代码用作计时器,给X和O 5分别回答相应的数学问题。为什么运行时没有倒数?如果需要课程的更多部分,我将很乐意提供。
解决方法
对于Swing,您应该使用Swing Timer。
-
您将需要一个变量
remainingSeconds
。 -
您将需要一个Swing计时器,该计时器每秒生成一个事件。
-
启动计时器时,您需要将
remainingSeconds
设置为5并更新显示标签 -
每次计时器触发时,您递减
remainingSeconds
并更新显示标签。 -
如果
remainingSeconds
达到0,则您a)停止计时器,并b)调用“用户无法回答”逻辑 -
但是,如果用户确实回答了您,则a)重新启动计时器,b)将
remainingSeconds
重置为5,使用户有完整的5秒钟的时间来回答,并c)更新显示标签。 / p>
请参阅:https://stackoverflow.com/a/7816604/131872,了解Swing Timer的基本用法,它将在10秒后停止。