Java Text anzeigen und nach x Sekunden ausblenden

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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:

http://pastebin.com/F6GN8c9B

Grüße

nikkeltech 
Fragesteller
 07.05.2015, 20:52

Vielen Dank, Know-How wieder erweitert :D

0

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?

blackst0rm  26.04.2015, 07:49

Das ist aber nicht gut. Es blockiert den EventDispatchThread.

0
Alahrs  26.04.2015, 14:12
@blackst0rm

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

0
nikkeltech 
Fragesteller
 30.04.2015, 22:35

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

0
Alahrs  30.04.2015, 22:41
@nikkeltech

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.

0
nikkeltech 
Fragesteller
 03.05.2015, 16:39
@Alahrs

Er soll eine bestimmte Meldung nur für ein paar Sekunden einblenden und dann wieder ausblenden....

0
Alahrs  03.05.2015, 17:03
@nikkeltech

Und wieso machst du es dann als set, set wait und nicht set, wait, set?

Verstehe ich nicht ganz :)

0
nikkeltech 
Fragesteller
 03.05.2015, 17:23
@Alahrs

Ich machs ja als set wait set... Es wird halt nur set set wait ausgeführt....

0
Alahrs  03.05.2015, 17:28
@nikkeltech

Magst du mal den Quellcode posten? Bei mir funktioniert es nämlich so wie oben geschrieben

0
nikkeltech 
Fragesteller
 03.05.2015, 18:08
@Alahrs

Datt iss inzwischen 'ne ganze Menge... Ich könnte es auf zwei Dateien reduzieren: die Frame und die Main, wäre das in Ordnung?

0
nikkeltech 
Fragesteller
 03.05.2015, 18:15
@nikkeltech

Sollten vielleicht doch eher drei bleiben, da ich nicht weiß, wo der Fehler liegt... Sry

0