Как сделать изменение цвета label на пару секунд?

private void questionElement (String idElement){
        String idElement2 = Integer.toString(a);

        if (idElement.equals(idElement2))
        {
            qe.setStyle("-fx-background-color:#00FF00;");//qe - label - надо чтобы фон лейбл становился зелёным на пару секунд, сейчас он становится зелёным на 0,000001 сек , те нужна какая-то задержка на секунды 2
            qe.setStyle("-fx-background-color:#FFEFD5;");//а затем менялся на первоначальный цвет
            System.out.println("правильно");
            generateQuestion ();
        }
        else
        {System.out.println("неправильно");}

    }

Ответы (1 шт):

Автор решения: Alex Krass

Обычно через таймеры и анимации, для примера можно к примеру через таймер AnimationTimer

class ChangeBackground extends AnimationTimer {
    Date date;

    @Override
    public void handle(long l) {
        if (new Date().getTime() - date.getTime() > 2000) {
            qe.setStyle("-fx-background-color:#FFEFD5;");
            System.out.println("правильно");
            generateQuestion ();
            this.stop();
        }

    }

    @Override
    public void start() {
        this.date = new Date();
        qe.setStyle("-fx-background-color:#00FF00;");
        super.start();
    }
}

protected void questionElement (String idElement) {
    String idElement2 = Integer.toString(a);

    if (idElement.equals(idElement2)) {
        new ChangeBackground().start():
    } else {
        System.out.println("неправильно");
    }        
}
→ Ссылка