10.29Zeitliches Ausführen mit dem javax.swing.Timer
Der javax.swing.Timer ist eine einfache Variante von java.util.Timer zum Ausführen von Programmcode eines Action-Listeners im AWT-Event-Thread. Im Konstruktor des Timer-Objekts wird für Intervalle die Verzögerungszeit eingestellt – wie im folgenden Beispiel, in dem jede Sekunde auf einer Komponente p ein repaint(…), also eine Neudarstellung, motiviert:
@Override public void actionPerformed( ActionEvent e ) {
p.repaint();
}
} );
t.start(); // t.stop() beendet.
Ein java.util.Timer-Timer hat mehrere Konstruktoren, doch beim javax.swing.Timer gibt es nur einen Konstruktor. Anpassungen vom Swing-Timer werden über Methoden realisiert, die Zustände setzen, etwa ob der Timer mehrmals ausgeführt werden soll.
Timer(int delay, ActionListener listener)
Erzeugt einen Timer, der nach einer gewissen Verzögerung (oder optional mit Wiederholung) den listener abarbeitet.void start()
Startet den Timer.void stop()
Stoppt den Timer.void setRepeats(boolean flat)
Ist flag false, wird der Listener nur einmal abgearbeitet.void setDelay(int delay)
Setzt die Verzögerung neu.void addActionListener(ActionListener listener)
Fügt einen neuen Listener hinzu, den der Timer abarbeitet.void restart()
Setzt den Timer in den Startzustand zurück und löscht alle noch hängenden Ereignisse.