Moin,
also mein Problem ist folgendes:
Ich brauche für mein Programm ein Countdown der auf einer GUI angezeigt wird.
Dafür habe ich eine Klasse CountdownLabel, die die Klasse JLabel erweitert. CountdownLabel hat eine Methode
die ich von einer anderen Klasse aufrufen möchte. Soweit so gut...
In der Methode
wird ein neuer Thread gestartet der die Sekunden runterzählt und dann über
die Zeit aktualisiert.
Wenn ich jetzt von der anderen Klasse den Countdown starte, wird zwar der Thread ausgeführt aber es wird nicht die Zeit auf dem Label aktuallisiert. Das erkenne ich daran, das ich nebenbei mir die aktuelle Zeit mit
ausgebe.
Und jetzt kommt das interessante:
Wenn ich jedoch
im Konstruktor meiner CountdownLabel-Klasse aufrufe, funktionierts einfandfrei...???:L
Das ganze sieht ungefähr so aus:
Hab ich jedoch meine andere Klasse, womit ich auch den Countdown starten will, gehts nicht:
Kann mir einer sagen, wieso setText(); nur funktioniert wenn ich start(); im Konstruktor der eigenen Klasse aufrufe und warum nicht, wenn ich den Countdown von einer anderen Klasse aus starten will?
MonsterBit
also mein Problem ist folgendes:
Ich brauche für mein Programm ein Countdown der auf einer GUI angezeigt wird.
Dafür habe ich eine Klasse CountdownLabel, die die Klasse JLabel erweitert. CountdownLabel hat eine Methode
Code:
start(final int stunden)
In der Methode
Code:
start()
Code:
setText(time)
Wenn ich jetzt von der anderen Klasse den Countdown starte, wird zwar der Thread ausgeführt aber es wird nicht die Zeit auf dem Label aktuallisiert. Das erkenne ich daran, das ich nebenbei mir die aktuelle Zeit mit
Code:
System.out.println(time);
Und jetzt kommt das interessante:
Wenn ich jedoch
Code:
start();
Das ganze sieht ungefähr so aus:
Java:
public class CountdownLabel extends JLabel {
public CountdownLabel() {
//....
start(6); //<--- Im Konstruktor funktioniert es
}
public void start(final int stunden) {
new Thread() {
public void run() {
//...
setText(time);
}
}
}
Hab ich jedoch meine andere Klasse, womit ich auch den Countdown starten will, gehts nicht:
Java:
public class Main {
//...
CountdownLabel cl = new CountdownLabel();
cl.start(6);
}
Kann mir einer sagen, wieso setText(); nur funktioniert wenn ich start(); im Konstruktor der eigenen Klasse aufrufe und warum nicht, wenn ich den Countdown von einer anderen Klasse aus starten will?
MonsterBit