Use javax.swing.Timer para fazer temporizador de contagem regressiva em Java [duplicado]

Duplicata Possível:
Parar timer com condicional só funciona pela primeira vez?

Estou muito confuso sobre como fazer um temporizador usando o swing e não o temporizador de util.

Estou fazendo um jogo em que os usuários precisam responder a perguntas em um limite de 30 segundos. Eu tenho um PlayFrame, onde a hora é mostrada, e um método dentro do PlayFrame chamado startTimer que contém todo o material do timer.

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);
    }
}

O que eu quero que este método faça é ter um temporizador que conte de 30 até que a pergunta seja respondida corretamente. Se a resposta for respondida incorretamente, quero que o temporizador pare.

Por uma resposta talvez algum psuedocode (ou código real) para me mover na direção certa. E isso é para uso pessoal, não dever de casa ou qualquer coisa.

Lembre-se de que isso faz parte do meu código inteiro e precisa funcionar com outras partes dele. Vou dar mais informações a pedido, obrigado!

EDIT: Novo método startTimer ()NOTA all System.out.print é apenas para teste:

  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");
}

Não faz nada e não sabe porquê.

questionAnswers(1)

yourAnswerToTheQuestion