Je vous conseille d'utiliser un javax.swing.Timer
pour ce problème, qui déclenchera périodiquement un ActionEvent
sur le thread Event Dispatch (notez que vous devez seulement appeler repeindre et/ou manipuler les composants Swing de ce thread). Vous pouvez ensuite définir un ActionListener
pour intercepter l'événement et repeindre votre composant à ce stade.
Exemple
JComponent myComponent = ...
int delay = 1000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
myComponent.repaint();
}
};
new Timer(delay, taskPerformer).start();
Notez également que SwingWorker
est probablement inappropriée comme il est généralement utilisé pour les tâches de fond qui ont un début et une fin, plutôt que d'une tâche périodique.
semble fonctionner, mais comment puis-je arrêter ce minuteur? –
Avez-vous lu l'API pour la classe Timer? Je pense que la méthode à utiliser est évidente. – camickr