Ho visto solo ora l'aggiornamento della discussione e mi sono anche accorto di aver sbagliato il nome del metodo di Timer: il metodo da richiamare è restart() non reset() (che non esiste).

Comunque, qui un esempio scritto al volo che ti fa vedere il funzionamento di questo metodo:

codice:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class EsempioTimer extends JFrame implements ActionListener {

   private class Stampa implements ActionListener {
      @Override
      public void actionPerformed(ActionEvent ae) {
         stampa();
      }
   }

   private class Controllo implements ActionListener {
      @Override
      public void actionPerformed(ActionEvent ae) {
         controllo();
      }
   }

   private JLabel lblTimer;
   private JButton cmdResetta;
   private JTextArea txtArea;

   private Timer timerStampa;
   private Timer timerControllo;

   private int timeOut;

   public EsempioTimer() {
      Container c = getContentPane();
      c.setLayout( new BorderLayout() );

      timeOut = 4;

      lblTimer = new JLabel();

      txtArea = new JTextArea();
      JScrollPane jsp = new JScrollPane( txtArea );

      cmdResetta = new JButton("Resetta timer");
      cmdResetta.addActionListener( this );

      JPanel jp = new JPanel( new FlowLayout(FlowLayout.CENTER, 1, 10) );
      jp.add( cmdResetta );

      c.add(lblTimer, BorderLayout.NORTH);
      c.add(jsp, BorderLayout.CENTER);
      c.add(jp, BorderLayout.SOUTH);

      setTitle("Esempio timer");
      setSize(300, 400);
      setLocationRelativeTo( null );
      setDefaultCloseOperation( EXIT_ON_CLOSE );
      setVisible( true );

      timerStampa = new Timer(5000, new Stampa());
      timerControllo = new Timer(1000, new Controllo());
      timerControllo.start();
      timerStampa.start();
   }

   private void controllo() {
      lblTimer.setText("Fra " + timeOut + " secondi verrà aggiunta una scritta");
      timeOut--;
   }

   private void stampa() {
      txtArea.append("Ecco una scritta!\n");
      timeOut = 5;
   }

   @Override
   public void actionPerformed(ActionEvent ae) {
      timeOut = 4;
      timerStampa.restart();
      timerControllo.restart();
   }

   public static void main(String[] args) {
      EsempioTimer et = new EsempioTimer();
   }
}
Quello che interessa a te è il funzionamento del Timer chiamato "timerStampa", che in pratica funziona come il tuo timer: se non viene premuto il pulsante entro 5 secondi, lui stampa una riga nella TextArea (l'altro timer serve solo a visualizzare il countdown a video). Al contrario, se viene premuto il pulsante, allora il timer viene resettato (chiamo restart()) e si avranno a disposizione ulteriori 5 secondi prima che la stringa venga scritta.

Ciao.