Search code examples
javatimercountdowncountdowntimernetbeans-8

Creating a count down timer- Java


    Timer timer = new Timer();

    TimerTask task = new TimerTask(){
        public void run(){
            for (int i = 0; i <= 30; i++){
                lblTimer.setText("" + i);
            }
        }
    };
    timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec

I have created a timer that starts when I press a button and above is the code that run. Can anyone help me create a timer that counts to 30? Right now when I run it, sets the text "30" in the label but I want it to start at 0 and count until 30.


Solution

  • Each time your timer runs, it performs the loop from 0 to 30, thus the UI is refreshed only when the loop ends. You need to keep your i in a member and update it each time the run method is called as such:

        Timer timer = new Timer();
    
        TimerTask task = new TimerTask(){
            private int i = 0;
            public void run(){
                if (i <= 30) {
                    lblTimer.setText("" + i++);
                }
            }
        };
        timer.scheduleAtFixedRate(task, 0, 1000); //1000ms = 1sec
    

    Of course once your reach i = 30, you should cancel your times, otherwise it'll still run every second but with no real effect or need.