/* * 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 defaut du label // et une autre couleur passee au constructeur public class BlinkingLabel extends JLabel { Color defaultColor; // Couleur par defaut du label Color blinkingColor; // Couleur de clignotement Timer timer; // Timer declenchant des tics // Constructeur public BlinkingLabel (String text, Color blinkingColor) { super (text); this.blinkingColor = blinkingColor; this.defaultColor = getForeground (); // Creation et lancement du timer timer = createTimer (); timer.start (); } // Methode renvoyant un timer pret a demarrer private Timer createTimer () { // Creation d'une instance de listener // associee au timer ActionListener action = new ActionListener () { // Methode appelee a chaque tic du timer public void actionPerformed (ActionEvent event) { // Inversion de la couleur if (getForeground ().equals (defaultColor)) setForeground (blinkingColor); else setForeground (defaultColor); } }; // Creation d'un timer qui genere un tic // chaque 500 millieme de seconde return new Timer (500, action); } // Methode main () d'exemple de mise en oeuvre. // Utilisation : java BlinkingLabel public static void main (String [] args) { // Creation de deux labels JLabel label1 = new BlinkingLabel ("Label 1", Color.blue); JLabel label2 = new BlinkingLabel ("Label 2", Color.red.darker ()); // Ajout des labels a une fenetre 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 (); } }