import java.awt.Graphics; import java.util.Date; public class orologio extends java.applet.Applet implements Runnable { private Thread avanza = null; /* Il thread dell'orologio !!! */ /* Deve far partire l'orologio */ public void start() { if (avanza == null) { // Se il thread non esiste ancora avanza = new Thread(this, "orologio"); // Lo crea avanza.start(); // E lo fa partire } } /* Metodo che esegue il 'lavoro duro' - azione */ public void run() { // Questo metodo viene invocato per ogni thread dell'Applet, quindi deve // eseguire il lavoro solo nel caso il thread sia quello dell'animazione // Il loop termina quando l'attributo avanza viene messo a null in stop() while (Thread.currentThread() == avanza) { repaint(); // Ridisegna l'Applet try { Thread.sleep(1000); // Attende 1 Secondo } catch (InterruptedException e){ // Nessuna azione } } } /* Funzione di disegno che semplicemente scrive data ed ora */ public void paint(Graphics g) { Date now = new Date(); // L'oggetto 'Date' contiene data ed ora di sistema g.drawString(now.toString(), 5, 10); // Usa 'toSring' per una versione stampabile di data ed ora } /* Se usciamo dalla pagina, elimina il thread */ public void stop() { avanza = null; // se 'avanza' diventra 'null', il metodo 'run' termina } }