2010-06-22 14 views
67

Tworzę małą aplikację Java, która powinna mieć wskaźnik postępu z procentami. W każdej pętli używa backspace \b, aby usunąć wyświetlany postęp przed wyświetleniem następnego procentu.Jak uzyskać backspace b do pracy w konsoli Eclipse?

Oto uproszczony przykład:

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!"); 
} 

Działa to doskonale w wierszu polecenia, ale charakter Backspace nie ujmuje się w konsoli Eclipse (Galileo budować 20090920-1017). Zamiast tego wyświetla pusty kwadrat oznaczający nieznaną postać. Zobacz zrzut ekranu:

alt text

Jak uzyskać Eclipse do "display" backspace prawidłowo? To znaczy. pozwól mu usunąć poprzednią postać.

to faktycznie nie showstopper ponieważ będzie po prostu uruchomić w konsoli poleceń, ale byłoby to po prostu miło się go do pracy w Eclipse jak dobrze :)

+1

Te same symptomy widzę w NetBeans – PMorganCA

Odpowiedz

51

Eclipse Bug #76936. Nie liczyłbym na nich naprawić i nie ma wymienionych obejść.

Możesz mieć szczęście, znalezienie wtyczki, która ma bardziej zaawansowaną konsolę.

+0

Och, chłopcze, to prawie 6-letni bug. Dziękuję za znalezienie raportu. – BalusC

+15

Zobacz komentarz nr 24 - "... zespół debugujący nie ma obecnie czasu/zasobów, aby nad tym pracować. ** Wkład byłby bardzo doceniany. **" –

+0

"\ r" nie działa albo – dacwe

7

Cóż, to prawda, że ​​nie można użyć funkcji Backspace \ b, aby usunąć wyświetlany postęp, ale można go usunąć, czyszcząc konsolę za pomocą pętli wywołującej println. Oczywiście ten kluczyk nie wyczyści Twojego pliku dziennika!

+0

"czyszczenie konsoli z ...." jak dokładnie? println() nie może usunąć już wydrukowanej linii na konsoli! – KNU

+0

Może wypychać wydrukowane wydruki w górę, tak aby wysunęły się z widocznego obszaru konsoli, skutecznie czyszcząc konsolę. – simon

2

Naprawiono, Eclipse Mars.

Uwaga, nie użyłbym go do ciągłej aktualizacji, ponieważ konsola Eclipse pozostaje w tyle.

+3

Niezamontowane w Neon.3 ('System.out.println (" x \ by ")'). – Matthieu

-1

użycie: System.out.print ("\ b") wewnątrz pętli while, zamiast System.out.print ('\ b');

Powiązane problemy