Horloge.java

import java.util.Date;
import java.applet.Applet;
import java.awt.*;
/**
 * Applette de visualisation de la date et de l'heure courante.
 */
public class Horloge extends Applet implements Runnable {
  volatile Thread timer;       // Processus léger actif
  Font f;                      // Fonte du texte
  Color textColor;             // Couleur du texte
  /**
   * Initialisation de l'applette par la récupération des paramètres
   * des balises <param> et la création de la fonte.
   */
  public void init() {
    f = new Font("Serif", Font.PLAIN, 14);
    try {
      // Récupération de l'entier en base 16 
      // représentant la couleur 
      int color = Integer.parseInt(getParameter("textcolor"),16);
      textColor = new Color(color);
    } catch (Exception e) {
      textColor = Color.red;     // Texte rouge par défaut 
    }
  }
  /**
   * Dessine le texte de la date et l'heure.
   */
  public void paint(Graphics g) {
    // Nouvelle valeur à afficher
    String now = new Date().toString();
    // Sélection de la fonte et de la couleur du texte
    g.setFont(f);
    g.setColor(textColor);
    // Dessin du texte
    g.drawString(now, 50, 50);
  }
  /**
   * Création d'un nouveau processus léger de mise à jour.
   */
  public void start() {
    timer = new Thread(this);
    timer.start();
  }
  /**
   * Rafraîchissement de l'heure.
   */
  public void run() {
    try {
      Thread t = Thread.currentThread();
      while (timer == t) { // En cas de start() multiples
    t.sleep(500);
    // Appel à la méthode paint() sur le bon contexte graphique
    repaint();
      }
    } catch (InterruptedException e) { }
  }
  /**
   * Demande l'arrêt du processus léger de mise à jour.
   */
  public void stop() {
    timer.interrupt();
  }
  public String getAppletInfo() {
    return new String("Titre: Horloge \n" +
       "Author: Etienne Duris, d'après Rachel Gollub\n" +
       "Simple horloge textuelle.");
  }
}