Ich habe vor kurzem eine GUI erstellt, die einer Art Konsole (Shell/Terminal) ähneln soll. Diese soll bei der Eingabe eines Kommandos bestimmte Aktionen ausführen. Nun wollte ich einige Rückgaben zeitverzögert ausgeben. Wenn ich allerdings mehrer Zeitverzögerungen hinterinander stelle, werden erst alle Verzögerungen durchgegangen, und erst dann der komplette Text ausgegeben.
Hauptcode:
Methode sleep():
Methode print():
Nun soll, wie oben gesagt, erst "Ausgabe 1", nach einer Sekunde "Ausgabe 2", und nach noch einer Sekunde "Ausgabe 3" in der JTextArea erscheinen. Es funktioniert alles, bis darauf, dass erst 2 Sekunden gewartet wird, bevor alle Ausgaben gleichzeitig gezeichnet werden.
Ist das ein Bug, oder wieso klappt das nicht?
Hauptcode:
Java:
print("Ausgabe 1");
sleep(1);
print("Ausgabe 2");
sleep(1);
print("Ausgabe 3");
Methode sleep():
Java:
protected void sleep(double seconds) {
try {
Thread.sleep((long) (seconds * 1000));
CommandManager.getConsole().repaint();
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
Methode print():
Java:
protected void print(String string) {
JTextArea consoleTextArea = CommandManager.getConsole();
consoleTextArea.setText(consoleTextArea.getText() + string);
}
Nun soll, wie oben gesagt, erst "Ausgabe 1", nach einer Sekunde "Ausgabe 2", und nach noch einer Sekunde "Ausgabe 3" in der JTextArea erscheinen. Es funktioniert alles, bis darauf, dass erst 2 Sekunden gewartet wird, bevor alle Ausgaben gleichzeitig gezeichnet werden.
Ist das ein Bug, oder wieso klappt das nicht?