Comment puis-je appeler une méthode toutes les n secondes?appeler une méthode à une heure spécifiée
Je veux faire un diaporama avec swing et CardLayout et toutes les n secondes il doit montrer une autre image appelant une autre méthode
Comment puis-je appeler une méthode toutes les n secondes?appeler une méthode à une heure spécifiée
Je veux faire un diaporama avec swing et CardLayout et toutes les n secondes il doit montrer une autre image appelant une autre méthode
import java.util.*;
class MyTimer extends TimerTask
{
public void run()
{
//change image
}
}
alors dans votre principale, vous pouvez planifier la tâche:
Timer t = new Timer();
t.schedule(new MyTimer(), 0, 5000);
premier numéro est retard initial, le second est le temps entre les appels à run()
de votre TimerTask
: 5000 est de 5 secondes.
Comme BalusC noté vous décomposez généralement des changements de swing sur thread d'événement AWT. Dans cette cause simple, il ne doit pas créer des problèmes lors du changement de fond d'un filetage extérieur, dans tous les cas, vous devez utiliser
public static void SwingUtilities.invokeLater(Runnable whatToExecute)
à envoyer votre changement sur le fil droit.
Si vous préférez l'approche BalusC il suffit d'utiliser un ActionListener
:
public void BackgroundChange implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
//change bg
}
}
javax.swing.Timer t = new javax.swing.Timer(5000, new BackgroundChange());
Ils fournissent tous les deux mêmes fonctionnalités, mais celui-ci plus tard, est déjà prêt à travailler avec des fils Swing mantaining compatibilité et éviter les problèmes étranges de synchronisations.
Puisque vous utilisez Swing, vous souhaitez utiliser javax.swing.Timer
pour cela. Voici un Sun tutorial on the subject.
Pour plus d'animation trivial dans l'application Swing, consultez Trident: http://kenai.com/projects/trident/pages/Home
Vous recommandez 'java.util.Timer', pas' javax.swing.Timer'. – BalusC
Je l'ai utilisé à plusieurs reprises pour des tâches similaires à celui-ci et il a toujours travaillé .. par ailleurs si vous préférez la minuterie swing vous suffit de modifier l'approche ayant un __ActionListener__ de style Swing qui implémente votre changement d'arrière-plan. – Jack
quand swing, utilisez toujours javax.swing.Timer – Xorty