Page d'accueilFindIt !ContactAstuces JavaAstuces Java

Astuces JavaTM

Astuces Java

Tip

 Utiliser un timer pour provoquer un clignotement

 

Niveau : débutant
Compatibilité : Java 1.1 + Swing 1.1 ou Java 2

Les 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 ();
  }
}

Page d'accueilFindIt !ContactAstuces JavaAstuces JavaDébut de la page
© Copyrights 1997-2023 Emmanuel PUYBARET / eTeks
- Tous droits réservés -
Astuces Java