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

Estoy escribiendo un juego de "Quién quiere ser un millonario" y tengo todo configurado, solo es un problema con el temporizador.

El juego funciona así: si el usuario responde correctamente a la pregunta, él / ella sigue adelante. Si no, el juego ha terminado y pueden optar por jugar de nuevo.

Cuando el juego se ejecuta por primera vez, está bien y el temporizador hace lo que debe: comienza a los 30 segundos y cuenta atrás, mostrando los segundos.

Sin embargo, cuando el usuario hace clic en el botón "jugar de nuevo", el temporizador anterior continúa con el nuevo temporizador. Me gusta esto:

Quedaron 20 segundos antes de que se perdiera el usuario (indicado por a).

-timerB comienza la próxima vez que se juega el juego (indicado por b).

salida: 20a 29b 19a 28b 18a 27b 17a 26b ....... 2a 11b 1a 10b 9b 8b 7b 6b 5b 4b 3b 2b 1b

Así que aquí está mi clase de temporizador llamada CountDown:

  import java.util.Timer;
  import java.util.TimerTask;

  public class CountDown {

      static Timer timer;
      public static int seconds = 30;

      public CountDown() {
          timer = new Timer();
          timer.schedule(new DisplayCountdown(), 0, 1000);
      }

      class DisplayCountdown extends TimerTask {

          int seconds = 30;

          public void run() {

                  if (seconds == 0) {
                      timer.cancel();
                      timer.purge();
                      return;
                  }

              if (seconds > 0) {
                  PlayFrame.timer.setText("" + seconds); //jLabel used to display seconds
                  seconds--;
                  if (seconds < 30) {
                      if (PlayFrame.right == true) { //check if question was answered correctly
                          System.out.print("true"); //testing purposes
                          PlayFrame.right = false;
                          PlayFrame.showQuestion();
                          PlayFrame.startTimer();
                          seconds = 0;
                          //break;
                      }
                      else if (PlayFrame.right == false) {
                          //break;
                      }
                  }      

                  else if (seconds == 0) { //if time runs out its automatic wrong answer
                      PlayFrame.wrong();
                      //break;
                  }      

                  else {
                      PlayFrame.wrong();
                      PlayFrame.timer.setText(null);
                      timer = new Timer();
                      //break;
                  }
              }
              System.out.println(seconds); // for testing purposes only
          }
      }
  }

Y aquí está algo de mi PlayFrame:

  import java.awt.Color;
  import java.util.Timer;

  public class PlayFrame extends javax.swing.JFrame {

      public static void wrong() {
          //determines which losing frame to show
          if (count <= 2){
              LossLevel0 L0 = new LossLevel0();
              L0.setVisible(true);
          }
          else if (count > 2 && count <= 6 && count != 6){
              LossLevel1 L1 = new LossLevel1();
              L1.setVisible(true);
          }
          else {
              LossLevel1 L1 = new LossLevel1();
              L1.setVisible(true);
          }
          //"supposed" to stop the timer
          CountDown.timer.cancel();
          CountDown.timer.purge();
      }

      public static void startTimer() {
          //creates new CountDown object and timer, also resets seconds
          CountDown countdown = new CountDown();
          CountDown.timer = new Timer();
          CountDown.seconds = 30;
      }

Creo que el problema puede estar en cuando reinicio el juego. El único código que hay allí es restablecer todas mis variables a su estado original antes de que el juego comenzara. Al igual que:

    // Reset Everything
    PlayFrame.count = 0;
    PlayFrame.answer = new String();
    PlayFrame.count = 0;
    PlayFrame.right = false;
    PlayFrame.winnings = 0;
    CountDown.seconds = 30;
    CountDown.timer = new Timer();
    CountDown.timer.cancel();
    CountDown.timer.purge();

Por favor ayuda, y si necesitas más información solo pregunta!

Respuestas a la pregunta(3)

Su respuesta a la pregunta