Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich weiß nicht ob ich hier oder besser im AWT/Swing forum aufgehoben bin. Aber da die Uhrzeit schon nicht korrekt erzeugt wird, denke ich das die Frage doch besser hier gestellt wird.
Um nun auf mein Problem zu sprechen zu kommen, ich würde gerne ein kleine Uhr schreiben, das Erzeugen der Oberfläche und das Aufrufen der Uhrzeit funktioniert auch ohne Probleme. Allerdings habe ich nun das Problem das die Uhrzeit zwar einmal im Objekt erzeugt wird, danach aber die Uhrzeit nicht wieder aktualisiert wird. Ich habe momentan folgenden Quellcode geschrieben:
Code:
import java.util.Date;
public class Modi
{
public void Uhrzeit(Oberflaeche o2)
{
// Definition der Variablen für die Sekunden, Minuten, Stunden
String sUhrzeit="";
String sStunde="";
String sMinute="";
String sSekunde="";
int iStunde=0;
int iMinute=0;
int iSekunde=0;
Date Uhrzeit;
while(true)
{
Uhrzeit=new Date();
iStunde=Uhrzeit.getHours();
iMinute=Uhrzeit.getMinutes();
iSekunde=Uhrzeit.getSeconds();
sStunde=iStunde+"";
sMinute=iMinute+"";
if(iMinute<10)
{
sMinute="0"+sMinute;
}
sSekunde=iSekunde+"";
if(iSekunde<10)
{
sSekunde="0"+sSekunde;
}
sUhrzeit=sStunde+" : "+sMinute+" : "+sSekunde;
o2.LZeit.setText(sUhrzeit);
System.out.println(sUhrzeit);
}
}
}
Ich rufe hierbei aus der Klasse Oberflaeche diese Methode bzw. diese Klasse auf und übergebe ihr die gesamte Oberfläche zum aktualisieren des Labels. Es kann ja gut sein das ich ein bisschen Blind bin aber ich sehe momentan leider nicht wo der Fehler ist und wäre daher über einen entsprechenden kleinen Tipp sehr dankbar.
Gruß
Dan
erst einmal danke für diese schnelle Antwort, ich habe das schon einmal mit Multithreading umgesetzt aber ich dachte ich könnte das vielleicht weg lassen da ich ja im Prinzip ja nur diesen einen Thread habe, und nicht wechseln muß. Aber dann wünsche ich dir viel spaß beim Fernsehe gucken .
Gruss
Dan
vielen dank für dein Posting, ich denke das mit den Threads bekomme ich hin, aber ich habe nie so wirklich verstanden wofür ich in diesem Fall ausgerechnet einen Thread benötige?
Es wäre schön wenn mir das noch jemand erklären könnte.
Gruß
Dan
Weil du damit alles blockierst. Das System steht und macht ein System out nach dem anderen. Zum aktualisieren der anderen Threads kommt das System garnicht mehr wenn du das nicht auch in einem Thread kapselst.
wenn du ein Eingabefeld hast und mit Focusgeschichten zu tun haben wirst und nebenbei die Uhr läuft, viel spass damit, weil du das mit Threads nicht hinbekommst
noch einmal vielen Dank für die vielen Aufschlußreichen Antworten, vor allem auch für die Erklärungen warum ich die Uhr nun doch mit Threads umsetzen muß.
private JLabel initClock() {
final DateFormat clockFormat = new SimpleDateFormat("HH:mm");
final DateFormat stringFormat = new SimpleDateFormat("EEEE, d. MMMM yyyy");
final JLabel clock = new JLabel(clockFormat.format(new Date()));
clock.setToolTipText(stringFormat.format(new Date()));
final Timer clockTimer = new Timer(100, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
synchronized(clock.getTreeLock()) {
clock.setText(clockFormat.format(new Date()));
clock.setToolTipText(stringFormat.format(new Date()));
}
}
});
clockTimer.start();
return clock;
}