/**
   Uhr-Applet (als Beispiel für einen Thread)
   @author Benedikt Großer, Holger Arndt
   @version 20.05.2003
*/
import java.awt.*;
import java.util.*;
import java.text.*;
import java.applet.Applet;

public class Uhr extends Applet implements Runnable
{
  Thread uhrThread = null;

  // ueberlagert Methode start() von Applet
  public void start()
  {
    if (uhrThread == null)
      {
        // Erzeuge eine Instanz von uhrThread.
        // Wir wollen, dass die Methode run()
        // des Applets selbst ausgeführt wird.
        // Daher uebergeben wir als Runnable this.
        uhrThread = new Thread(this, "Uhr");
        uhrThread.start();
      }
  }

  // ueberlagert Methode run() von Runnable
  public void run()
  {
    Thread meinThread = Thread.currentThread();
    while (uhrThread == meinThread)
      {
        repaint();
        try { Thread.sleep(1000); }
        catch (InterruptedException e){}
      } // while
  }

  // ueberlagert Methode paint() von Applet
  public void paint(Graphics g)
  {
    Calendar now = Calendar.getInstance();
    now.setTimeZone(TimeZone.getTimeZone("ECT"));
    now.setTime(now.getTime());     // workaround
    DecimalFormat df = new DecimalFormat("00");
    g.drawString(df.format(now.get(Calendar.HOUR_OF_DAY)) + ":" +
		 df.format(now.get(Calendar.MINUTE)) + ":" +
		 df.format(now.get(Calendar.SECOND)), 10, 20);
  }

  // ueberlagert Methode stop() von Applet
  public void stop() { uhrThread = null; }

} // public class Uhr extends Applet implements Runnable
