可能重复:
停止与条件仅适用第一次计时器?
我来了如何使用摆动,而不是util的计时器计时很困惑。
我想提出一个游戏,用户必须回答在30秒的时间限制的问题。 我有一个PlayFrame,其中显示的时间,里面PlayFrame的方法称为startTimer所包含所有计时器东西。
public static void startTimer() {
int elapsedSeconds = 0;
javax.swing.Timer myTimer = new javax.swing.Timer(1000, new MyTimerActionListener());
elapsedSeconds++;
if (elapsedSeconds == 30) {
myTimer.stop();
timerLabel.setText("0");
wrong();
} else {
String text = String.format("f", 30 - elapsedSeconds);
timerLabel.setText(text);
}
if (myTimer != null && myTimer.isRunning()) {
myTimer.stop();
myTimer = null;
timerLabel.setText("0");
} else {
elapsedSeconds = 0;
myTimer = new javax.swing.Timer(1000, new MyTimerActionListener());
myTimer.start();
String text = String.format("t", 30);
timerLabel.setText(text);
}
}
我想这个方法做的是有一个,直到问题回答正确30倒计时计时器。 如果答案是不正确回答我希望计时器停止。
一个答案也许是一些伪代码(或实际代码)移动我在正确的方向。 这是供个人使用,不做作业或任何东西。
请记住,这是我的全部代码的一部分,它需要与它的其它部分的工作。 我会根据要求提供更多的信息,谢谢!
编辑:新startTimer所()方法, 注意是System.out.print全部是仅用于测试:
public static void startTimer() {
class TimerListener implements ActionListener {
Timer timer = new Timer(1000, new TimerListener());
int elapsedSeconds = 30;
String seconds = Integer.toString(elapsedSeconds);
@Override
public void actionPerformed(ActionEvent evt) {
timer.start();
if (elapsedSeconds == 0) {
//System.out.print("here");
timer.stop();
PlayFrame.wrong();
}
else{
//System.out.print("hersfde");
elapsedSeconds--;
PlayFrame.timerLabel.setText(seconds);
}
//System.out.println(elapsedSeconds);
}
}
//System.out.print("l");
}
没有做任何事情,不知道为什么。