Используйте javax.swing.Timer, чтобы сделать таймер обратного отсчета в Java [duplicate]

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

Я очень смущен тем, как сделать таймер, используя качели, а не утилизируемый таймер.

Я делаю игру, в которой пользователи должны отвечать на вопросы в течение 30 секунд. У меня есть PlayFrame, где отображается время, и метод внутри PlayFrame с именем startTimer, который содержит все вещи таймера.

public static void startTimer() {

    int elapsedSeconds = 0;
    javax.swing.Timer myTimer = new javax.swing.Timer(1000, new MyTimerActionListener());
    elapsedSeconds++;

    if (elapsedSeconds == 30) {
        myTimer.stop();
        timerLabel.setText("0");
        wrong();
    } else {
        String text = String.format("f", 30 - elapsedSeconds);
        timerLabel.setText(text);
    }

    if (myTimer != null && myTimer.isRunning()) {
        myTimer.stop();
        myTimer = null;
        timerLabel.setText("0");
    } else {
        elapsedSeconds = 0;
        myTimer = new javax.swing.Timer(1000, new MyTimerActionListener());
        myTimer.start();
        String text = String.format("t", 30);
        timerLabel.setText(text);
    }
}

Я хочу, чтобы этот метод имел таймер, который отсчитывает от 30 до правильного ответа на вопрос. Если ответ получен неправильно, я хочу, чтобы таймер остановился.

Для ответа возможно какой-нибудь psuedocode (или реальный код), чтобы переместить меня в правильном направлении. И это для личного пользования, а не для домашней работы или чего-то еще.

Пожалуйста, помните, что это часть всего моего кода, и он должен работать с другими его частями. Я дам больше информации по запросу, спасибо!

РЕДАКТИРОВАТЬ: Новый метод startTimer ()НОТА все System.out.print только для тестирования:

  public static void startTimer() {
    class TimerListener implements ActionListener {
        Timer timer = new Timer(1000, new TimerListener());
        int elapsedSeconds = 30;
        String seconds = Integer.toString(elapsedSeconds);

        @Override
        public void actionPerformed(ActionEvent evt) {
            timer.start();
            if (elapsedSeconds == 0) {
                //System.out.print("here");
                timer.stop();
                PlayFrame.wrong();
            }
            else{
                //System.out.print("hersfde");
                elapsedSeconds--;
            PlayFrame.timerLabel.setText(seconds);
            }
            //System.out.println(elapsedSeconds);
        }
    }
    //System.out.print("l");
}

Ничего не делает и не уверен почему.

Ответы на вопрос(1)

Ваш ответ на вопрос