Как сделать таймер обратного отсчета в Java?



Я хочу отсчитывать каждую секунду и обновлять текст метки?

int countdown = 100;

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

Так как же запускать countingDown Каждую секунду?

75   3  

3 ответов:

Вы, возможно, сделаете так:

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

Это просто работает. Измените System.out.println(countdown); на label.setText(countdown +"second's left"); как то, что вы хотите.

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

Вы можете использовать приведенный ниже код

final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        final Runnable refresh = new Runnable() {
            public void run() {
                //countingDown stuff;
            }
        };
scheduler.scheduleAtFixedRate(refresh, 0, 1,SECONDS);

Попробуйте это

int countdown=100;

    public void countingDown(){

     new Timer().schedule(new TimerTask(){

            @Override
            public void run() {
             countdown=countdown - 1;

                label.setText(countdown +"second's left");
            }   
        },0, 1000);
    }
    Ничего не найдено.

Добавить ответ:
Отменить.