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
}
}