Java 计时器在以分钟为单位减少时有困难
嗨,我在做一个计时器程序,从6:00开始倒计时。它运行良好(6:00,5:59,5:58…5:01,5:00,4:59),但在4:59之后,它开始以分钟而不是秒(例如:4:59,3:59,2:59)减少,我不明白为什么 代码如下:Java 计时器在以分钟为单位减少时有困难,java,timer,Java,Timer,嗨,我在做一个计时器程序,从6:00开始倒计时。它运行良好(6:00,5:59,5:58…5:01,5:00,4:59),但在4:59之后,它开始以分钟而不是秒(例如:4:59,3:59,2:59)减少,我不明白为什么 代码如下: //Drag Button public class event implements ActionListener { public void actionPerformed(ActionEvent e){ int count = 60; d
//Drag Button
public class event implements ActionListener {
public void actionPerformed(ActionEvent e){
int count = 60;
dragTimer.setText("6:00");
TimeClass tc = new TimeClass(count);
dragT = new Timer(1000, tc);
dragT.start();
}
}
public class TimeClass implements ActionListener {
int counter = 60;
int minute = 5;
public TimeClass(int counter){
this.counter = counter;
}
public void actionPerformed(ActionEvent tc){
counter--;
if(minute > 0){
if(counter >= 0) {
String countString = Integer.toString(counter);
String minuteString = Integer.toString(minute);
String numb = minuteString + ":" + countString;
dragTimer.setText(numb);
}
if(counter < 10 || counter <= 1){
String countString = Integer.toString(counter);
String minuteString = Integer.toString(minute);
String numb = minuteString + ":0" + countString;
dragTimer.setText(numb);
}
if(counter < 0){
int counter = 59;
minute--;
String countString = Integer.toString(counter);
String minuteString = Integer.toString(minute);
String numb = minuteString + ":" + countString;
dragTimer.setText(numb);
}
}else{
dragT.stop();
dragTimer.setText("0:00");
Toolkit.getDefaultToolkit().beep();
}
}
}
//拖动按钮
公共类事件实现ActionListener{
已执行的公共无效操作(操作事件e){
整数计数=60;
dragTimer.setText(“6:00”);
TimeClass tc=新的TimeClass(计数);
dragT=新定时器(1000,tc);
dragT.start();
}
}
公共类TimeClass实现ActionListener{
int计数器=60;
int分钟=5;
公共时间类(整数计数器){
this.counter=计数器;
}
已执行的公共无效操作(操作事件tc){
计数器--;
如果(分钟>0){
如果(计数器>=0){
字符串countString=Integer.toString(计数器);
字符串minuteString=Integer.toString(分钟);
字符串numb=minuteString+“:”+countString;
dragTimer.setText(numb);
}
如果(计数器<10 | |计数器<代码>如果(计数器<0){
int counter=59;//将此更改为
计数器=59;
您正在创建另一个计数器变量,其作用域将仅在if循环中
相反,您应该重置以前(已经)声明的变量
下次执行循环时,计数器值将不会是您期望的值,请将其分配给59。请考虑使用它。它适用于此类情况,您不必单独记录分钟和秒数。
if(counter < 0){
int counter = 59;//change this to
counter = 59;