|
Utiliser un timer pour provoquer un clignotement |
Niveau : débutant
Compatibilité : Java 1.1 + Swing 1.1 ou Java 2Les threads permettent entre autre de programmer un timer en Java. Un timer est une sorte d'horloge générant des tics de manière régulière, auquel un programme réagit pour effectuer une tâche répétitive.
Pour éviter d'utiliser directement un thread et simplifier la programmation d'un timer, Swing propose la classe javax.swing.Timer.Cette classe rappelle la méthode actionPerformed () d'un (ou plusieurs) listener à chaque fois qu'un laps de temps donné s'est écoulé.
L'exemple qui suit utilise la classe Timer pour faire clignoter un label. Le clignotement est provoqué en alternant chaque demi-seconde la couleur par défaut du label et une couleur donnée.Pour tester la classe BlinkingLabel, recopiez le programme qui suit dans un fichier BlinkingLabel.java, compilez-le avec la commande javac BlinkingLabel.java et exécutez-le grâce à la commande java BlinkingLabel.
Si vous utilisez Java 1.1, vous devez télécharger Swing 1.1 à l'adresse (Swing 1.1 est inclus dans Java 2) :
http://java.sun.com/products/jfc/download.html./* * BlinkingLabel.java 1.0 * * Copyright (c) 1999 Emmanuel PUYBARET - eTeks. * All Rights Reserved. * */ import javax.swing.*; import java.awt.*; import java.awt.event.*; // Classe de label clignotant en utilisant // alternativement la couleur par défaut du label // et une autre couleur passée au constructeur public class BlinkingLabel extends JLabel { Color defaultColor; // Couleur par défaut du label Color blinkingColor; // Couleur de clignotement Timer timer; // Timer déclenchant des tics // Constructeur public BlinkingLabel (String text, Color blinkingColor) { super (text); this.blinkingColor = blinkingColor; this.defaultColor = getForeground (); // Création et lancement du timer timer = createTimer (); timer.start (); } // Méthode renvoyant un timer prêt à démarrer private Timer createTimer () { // Création d'une instance de listener // associée au timer ActionListener action = new ActionListener () { // Méthode appelée à chaque tic du timer public void actionPerformed (ActionEvent event) { // Inversion de la couleur if (getForeground ().equals (defaultColor)) setForeground (blinkingColor); else setForeground (defaultColor); } }; // Création d'un timer qui génère un tic // chaque 500 millième de seconde return new Timer (500, action); } // Méthode main () d'exemple de mise en oeuvre. // Utilisation : java BlinkingLabel public static void main (String [] args) { // Création de deux labels JLabel label1 = new BlinkingLabel ("Label 1", Color.blue); JLabel label2 = new BlinkingLabel ("Label 2", Color.red.darker ()); // Ajout des labels à une fenêtre d'exemple JFrame frame = new JFrame ("Exemple"); frame.getContentPane ().setLayout (new GridLayout (2, 1, 5, 5)); frame.getContentPane ().add (label1); frame.getContentPane ().add (label2); frame.pack (); frame.show (); } }
|