Ich erstelle eine kleine Java-Anwendung, die eine Fortschrittsanzeige mit Prozentsätzen haben sollte. In jeder Schleife wird die Rücktaste verwendet \b
, um den angezeigten Fortschritt zu entfernen, bevor der nächste Prozentsatz angezeigt wird.
Hier ist ein vereinfachtes Beispiel:
public static void main(String[] args) throws Exception {
System.out.print("Progress: ");
for (int percentage = 0; percentage < 100; percentage++) {
System.out.print(percentage + "%");
Thread.sleep(10); // Stub for "long running task".
int length = String.valueOf(percentage).length() + 1;
while (length-- > 0) {
System.out.print('\b');
}
}
System.out.println("finished!");
}
Dies funktioniert perfekt in der Eingabeaufforderung, aber die Rücktaste wird in der Eclipse-Konsole nicht erkannt (Galileo Build 20090920-1017). Stattdessen wird ein leeres Quadrat angezeigt, das ein unbekanntes Zeichen kennzeichnet. Siehe Screenshot:
Wie bringe ich Eclipse dazu, die Rücktaste richtig "anzuzeigen"? Dh lassen Sie es das vorherige Zeichen entfernen.
Dies ist eigentlich kein Showstopper, da es nur in der Befehlskonsole ausgeführt wird, aber es wäre einfach schön, wenn es auch in Eclipse funktioniert :)
Antworten:
Eclipse Bug # 76936. Ich würde mich nicht darauf verlassen, dass sie das Problem beheben, und es sind keine Problemumgehungen aufgeführt.
Möglicherweise haben Sie Glück, ein Plugin zu finden, das zu einer erweiterten Konsole beiträgt.
quelle
Nun, es ist wahr, dass Sie die Rücktaste \ b nicht verwenden können, um den angezeigten Fortschritt zu entfernen, aber Sie können ihn entfernen, indem Sie die Konsole mit einer Schleife löschen, die println aufruft. Natürlich wird diese Kluge Ihre Protokolldatei nicht löschen!
quelle
Behoben, Eclipse Mars.
Beachten Sie, dass ich es nicht für ständige Aktualisierungen verwenden würde, da die Eclipse-Konsole verzögert ist.
quelle
System.out.println("x\by")
) nicht behoben .Jetzt haben sie es behoben, aber es ist standardmäßig deaktiviert. Sie sollten es über
Interpret ASCII control characters
in den Konsoleneinstellungen aktivieren .quelle
Verwenden Sie: System.out.print ("\ b") innerhalb der while-Schleife anstelle von System.out.print ('\ b').
quelle