Search code examples
javatimerlabel

How to make count down timer in Java?


I want count down every second and update the label text?

int countdown = 100;

public void countingDown() {
    countdown = countdown - 1;
    label.setText(countdown + "second's left");
}

so how to run countingDown every second?


Solution

  • You maybe do like this:

    package com.example;
    
    import java.util.Timer;
    import java.util.TimerTask;
    
    public class MyTimer {
    
        public static void main(String[] args) {
            Timer timer = new Timer();
            timer.schedule(new App(), 0, 1000);
        }
    }
    
    class App extends TimerTask {
    
        int countdown = 100;
    
        public void run() {
            countdown = countdown - 1;
            System.out.println(countdown);
            //label.setText(countdown +"second's left");
        }
    
    }
    
    // Result:
    //99
    //98
    //97
    //96
    //95
    //94
    

    It just works. Change System.out.println(countdown); by label.setText(countdown +"second's left"); as what you want.

    Reference
    http://docs.oracle.com/javase/8/docs/api/index.html?java/util/TimerTask.html
    http://docs.oracle.com/javase/8/docs/api/index.html?java/util/Timer.html