le chronomètre
import java.awt.*; import java.applet.Applet; public class Chrono extends Applet implements Runnable { private Thread chronometre; private int dixiemeseconde = 0; // Méthode appelée par le système au démarrage de l'applet public void start () { // Au début de l'applet, création et démarrage du chronomètre chronometre = new Thread (this); chronometre.start (); } public void run () { try { while (chronometre.isAlive ()) { // Dessine le compteur (appel indirect à la méthode paint ()), // puis l'augmente de 1 repaint (); dixiemeseconde++; // Arrête le thread pendant 1/10 s (100 ms) Thread.sleep (100); } } catch (InterruptedException e) { } } // Méthode appelée par le système à l'arrêt de l'applet public void stop () { // A la fin de l'applet, arrêt du chronometre chronometre.stop (); } // Méthode appelée par le système pour mettre à jour le dessin de l'applet public void paint (Graphics gc) { // Dessine le temps écoulé sous forme de hh:mm:ss:d en noir et helvetica gc.setColor (Color.black); gc.setFont (new Font ("TimesRoman", Font.BOLD, getSize ().height)); gc.drawString (dixiemeseconde / 36000 + ":" + (dixiemeseconde / 6000) % 6 + (dixiemeseconde / 600) % 10 + ":" + (dixiemeseconde / 100) % 6 + (dixiemeseconde / 10) % 10 + ":" + dixiemeseconde % 10, 2, getSize ().height - 2); } }
Pour controler ce chronomètre on pourra utiliser l'applet suivante
import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class lanceur extends Applet implements ActionListener { Applet leChrono = null; Button bouton; public void init () {add (bouton = new Button ("STOP")); bouton.addActionListener(this); leChrono = getAppletContext ().getApplet("chrono"); } // Méthode appelée quand on clique sur le bouton public void actionPerformed(ActionEvent e) { if (bouton.getLabel().equals("STOP")){ leChrono.stop(); bouton.setLabel("DEMARRER"); } else{ leChrono.start(); bouton.setLabel("STOP"); } bouton.invalidate (); validate (); } }
Vous remarquerez que seule l'applet chrono du bas est effectivement arrêtée, en effet j'ai pris soin de préciser dans le fichier HTML pour cette deuxième applet:
<
applet width="200" height="30" name="chrono" code="Chrono.class"></applet>