Java 计时器在以分钟为单位减少时有困难

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

嗨,我在做一个计时器程序,从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;
    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;