Java Text anzeigen und nach x Sekunden ausblenden
Moinsen,
meine Frage ist im Grunde wie das was oben steht in Java umzusetzen ist. Ich habe versucht Text im Frame auszugeben dann mit Thread.sleep abzuwarten und dann den Text wieder gleich "" zu setzen (das ganze innerhalb einer Methode). Problem dabei ist, dass er erst x Sekunden wartet bevor er den Text überhaupt anzeigen will, weswegen der Text natürlich auch sofort zurückgesetzt wird, das heißt man sieht gar nichts vom Text.
Vielen Dank schonmal im Voraus für Antworten :D
2 Antworten
Gut,
Thread.sleep blockt natürlich die ganzen Handler, also ist er mit dem repaint des ersten Aufrufes noch nicht durch und wird dann in den Schlaf geschickt.
Mach die Methode lieber so:
Grüße
public void displayText(JLabel label, String text) {
label.setText(text);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
label.setText("");
}
Funktioniert bei mir wunderbar. Oder habe ich was falsch verstanden?
Und wieso schreibst du es dann überhaupt so? Wenn du 2x den Test set'test, dann wird der natürlich super schnell nach Ausführen des 2. Befehls überschrieben, das Warten davor hilft ja dann auch nicht.
Er soll eine bestimmte Meldung nur für ein paar Sekunden einblenden und dann wieder ausblenden....
Und wieso machst du es dann als set, set wait und nicht set, wait, set?
Verstehe ich nicht ganz :)
Ich machs ja als set wait set... Es wird halt nur set set wait ausgeführt....
Magst du mal den Quellcode posten? Bei mir funktioniert es nämlich so wie oben geschrieben
Datt iss inzwischen 'ne ganze Menge... Ich könnte es auf zwei Dateien reduzieren: die Frame und die Main, wäre das in Ordnung?
Sollten vielleicht doch eher drei bleiben, da ich nicht weiß, wo der Fehler liegt... Sry
Kenne ich nicht die Seite, habs ma versucht.
Geht das per Link?
Der wäre: http://pastebin.com/Dx9dsgNg
Wenn der die Methode in einem neuen Thread ausführt, der nur dafür da ist? Sonst würde er ja nicht Thread.sleep nehmen
Das Problem dabei ist, dass der Text gar nicht erst angezeigt wird, da die Reihenfolge in der die Methode ausgeführt wird folgendermaßen ist:
Warten
dann label.setText(text);
und dann direkt wieder label.setText("");
und nicht:
label.setText(text);
Warten
label.setText("");
Das ist das Problem die Reihenfolge ind er das ganz ausgeführt wird