Odliczanie czasu w Labelu

0

czesc! chcialbym was spytac jak to jest, ze zmieniam tekst Labelu a mimo to on pozostaje w starej postaci. Chcialbym uzyskac efekt liczenia w dol. Stad tez zrobilem cos takiego:

    @FXML
    private Label timeCounterLabel;

   private void countTimeToStart(){
        Runnable runnable = new Counter(timeCounterLabel);
        new Thread(runnable).start();
}

class Counter implements Runnable{

    private Label label;

    public Counter(Label label){
        this.label = label;
    }

    public void run() {
        try {
            for (int i = 3; i > 0; i--) {
                label.setText(i + "...");
                Thread.sleep(1000);
            }
            label.setText("Start!");
            Thread.sleep(1000);
            label.setVisible(false);
        }catch (InterruptedException e){}
    }
}

jednak kompletnie nic się nie dzieje. doczytałem, że do odświeżania UI w JavieFX jest stosowane Platform.runlater(). jednak po zmianie kodu nadal nic się nie dzieje. mam wrażenie, że zmiany blokuje Thread.sleep(). Tylko jak? i dlaczego?

0

po skompilowaniu, program sprawia wrażenie jakby pomijał każdą instrukcję setText(). po upływie kilku sekund jedyne co się dzieje to Label faktycznie znika.
Odpaliłem debuggera. Przy każdym wykonaniu pętli Label faktycznie zmienia swój tekst na taki który powinien przyjać, tylko dlaczego cholera w okienku pozostaje bez zmian?

0

Użyj Timera do zmiany tekstu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1