Use javax.swing.Timer para hacer el temporizador de cuenta regresiva en Java [duplicado]

Posible duplicado:
El temporizador de parada con condicional solo funciona la primera vez?

Estoy muy confundido en cuanto a cómo hacer que un temporizador use el swing y no un temporizador util.

Estoy creando un juego en el que los usuarios tienen que responder preguntas en un límite de tiempo de 30 segundos. Tengo un PlayFrame, donde se muestra la hora, y un método dentro de PlayFrame llamado startTimer que contiene todas las cosas del temporizador.

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

Lo que quiero que haga este método es tener un temporizador que haga una cuenta regresiva desde 30 hasta que la pregunta sea respondida correctamente. Si la respuesta es incorrecta, quiero que el temporizador se detenga.

Para obtener una respuesta, tal vez algún código psicológico (o código real) para moverme en la dirección correcta. Y esto es para uso personal, no para la tarea ni nada.

Recuerde que esta es una parte de mi código completo y necesita trabajar con otras partes de él. Daré más información a petición, gracias!

EDITAR: Nuevo método startTimer ()NOTA todo System.out.print es solo para pruebas:

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

No hace nada y no estoy seguro de por qué.

Respuestas a la pregunta(1)

Su respuesta a la pregunta