PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aktuelle Uhrzeit permanent anzeigen...



Jor
15-12-2005, 07:54
Hallo *.*,

ich möchte in meinem Frame, eventuell im Titel, die aktuelle Uhrzeit permanent anzeigen. Klar, irgendwie ein Timer und System.currentTimeMillis() auswerten und zurecht basteln, oder geht das einfacher?
Etwa so: Fenster.setText(String.valueOf(System.time) ) und das nun per Timer periodisch alle halbe Sekunde ausgeben?
Oder muss ich mich um die Umrechnung der Zeit selber kümmern? Naja, wäre auch nicht schlimm, aber wie mache ich das mit dem Timer?
Hat jemand ein Script-Beispiel oder kann mir so ein Tipp geben?
(Trotz Suche habe ich nichts passendes gefunden)

mwanaheri
15-12-2005, 08:34
für die Ausgabe der Uhrzeit ist ein SimpleDateformat ganz praktisch:
SimpleDateFormat sdfAktuell = new SimpleDateFormat("hh:mm:ss")

Die Zeit erfasst du als Date:
Date zeit = new Date();

und setzt sie auf die Systemzeit:

zeit.setTime(System.currentTimeMillis()):

Dann kannst du das Label anpassen:
labeltext = sdfAktuell.format(zeit); // labeltext ist ein String
zeitLabel.setText(labeltext);

Für solche Sachen konsultiere ich übrigens meistens "Das Java Codebook" (Addison-Wesley). Eine wirklich lohnende Anschaffung. Viele "Howto"s drin.

Jor
15-12-2005, 09:01
Hi mwanaheri, vielen Dank!
Das Holen der Zeit ist doch so wie ich es erhofft hatte. Das bekomme ich hin, dein Tipp mit dem Buch ist auch prima, ich werde versuchen es über ein Bücherei zu bekommen um zu schauen, ob ich damit auch zurecht komme.

Kannst du mir auch sagen, wie ich den Ticker bastel, der den String immer wieder neu ins Feld bzw. in den Titel schreibt?

mwanaheri
15-12-2005, 10:29
Dafür brauchst du einen eigenen Thread.
Bau Dir eine Klasse, die das Interface Runnable implementiert, also z.B.
class Wecker extends JLabel implements Runnable{
...
}
In der definierst du die Methode, um den Zeitstring zu erzeugen und eine Methode public void run()
Die musst du schon deshalb implementieren, weil du das mit dem Interface Runnable versprochen hast. Diese Methode wird später vom Programm aufgerufen.
In die Methode run() kommt eine endlosschleife (z.B. while(true){}) in der du die Zeitabfrage machst, mit this.setText() den Labeltext setzt und dann den Thread mit Thread.currentThread().sleep(900) schlafen schickst.
Dabei musst du noch Exceptions abfangen, aber das sollte weiter kein Problem sein.

Im Programm erzeugst du dann eine Instanz von Wecker und bringst sie wie ein ganz normales Label an. Dann startest du den Thread mit
Thread t = new Thread(wecker);
t.start();

Das wars schon.

Jor
15-12-2005, 11:48
So, so, das wars schon? :confused:
Du weisst schon das ich mich als Java-Newbie bezeichne? Ist wohl eher eine Wochenendknobelaufgabe für mich, aber ich werde sie angehen.
Ich denke das ich klar kommen werde.
Vielen Dank! :)

mwanaheri
15-12-2005, 12:59
Dazu steht übrigens ein Beispiel in o.g. Buch. Ein Anruf beim Dealer deines Vertrauens und schon morgen hast du es. ;-)

Jor
15-12-2005, 15:02
Ok, ok, habe ich verstanden! :D

Ich hätte da aber noch eine Frage: So weit ich weis, gibt (oder gab) es eine HTMl-Dokumentation zu den Klassen
von Java. Weist du was ich meine, kannst mir eventuell den Namen nennen und eventuell wo ich dieses runterladen kann?

mwanaheri
15-12-2005, 15:24
kucksu hier:
http://java.sun.com/docs/index.html

und nimm auch gleich das Java Tutorial mit.
Ohne die Doku ist wirklich schlecht arbeiten.

Jor
15-12-2005, 15:30
:) Danke! :)