Jetzt wollen wir eine einfache Digitaluhr aufbauen.
Das Grundgerüst ist ihre einfache Thread-Animation, die sie aus JumpingBall2 bereits kennen.
Damit wir auf die Datumsfunktionen zugreifen können, benötigen wir eine weitere Importanweisung:
import java.util.*;
Dann benötigen wir jeweils ein Font- und ein GregorianCalendar-Objekt, sowie ein paar Hilfsvariablen:
private Font FSchriftart = new Font("sansSerif",Font.BOLD,24); private GregorianCalendar jetzt; private String Uhrzeit = ""; private String Minute = ""; private int Minutenwert = 0; private String Sekunde = ""; private int Sekundenwert = 0;
In der paint-Methode wird dann erst die Schriftart gesetzt und dann das Datum und die Uhrzeit ausgegeben:
public void paint(Graphics g) { g.setFont(FSchriftart); g.drawString(Uhrzeit,40,30); }
Die run-Methode holt nun jeweils das aktuelle Datum über den Konstuktor des GregorianCalendar-Objekts, wandelt die Werte in einen String um, zeichnet das Applet neu und lässt dann den Thread 1000 ms pausieren:
public void run() { while (true) { jetzt = new GregorianCalendar(); Sekundenwert=jetzt.get(Calendar.SECOND); Minutenwert=jetzt.get(Calendar.MINUTE); if (Sekundenwert<10) Sekunde="0"+Sekundenwert; else Sekunde=""+Sekundenwert; if (Minutenwert<10) Minute="0"+Minutenwert; else Minute=""+Minutenwert; Uhrzeit=""+jetzt.get(Calendar.HOUR_OF_DAY)+":"+Minute+":"+Sekunde; repaint(); try { Thread.sleep(1000); } catch (InterruptedException e) { } } }
Die get-Methode auf bestimmte Calendar-Objekte liefert dabei die Stunden, Minuten, Sekunden als int-Werte. Damit bei Minuten oder Sekundenwerten unter 10 nicht die Anzeige in der Form 5 statt 05 erfolgt, muss in den if-Anweisungen dieses abgefangen werden.
© Ralph-Erich Hildebrandt, 30. Juni 2004