2012-03-13 6 views
1

можно ли переопределить последний вывод System.out.println, так что я могу, например, визуализировать изменения в массиве или создать progessbar?Переопределить предыдущий вывод консоли

Например, если у меня есть этот класс:

class Main{ 
    public static void main(String[] args){ 
    for(int i = 0; i < 10; i++){ 
     for(int j = 0; j < i; j++){ 
     System.out.print("#"); 
     } 
     System.out.println(""); 
    } 
    } 
} 

Что я должен сделать, чтобы создать эту простую ProgressBar, который показан в одной строке, а не в 10 Seperate линии?

ответ

2

Это работает на моей конкретной консоли (Windows), но это не очень портативный ...

public class Test { 
    public static void main(String[] args) throws Exception { 
     for (int i = 0; i < 100; i++) { 
      System.out.print("#"); 
      if (i % 20 == 0) { 
       System.out.print("\r     \r"); 
      } 
      System.out.flush(); 
      Thread.sleep(100); 
     } 
    } 
} 

Там также Console класс, но это на самом деле не купить вам очень, насколько я могу видеть, ...

+0

спасибо! он также работает под linux, могу ли я также использовать это, чтобы очистить несколько строк? – reox

+0

@reox: Нет, это просто использование '\ r', чтобы вернуться к началу строки, а затем написать нагрузку пробелов, а затем вернуться к началу строки снова. Вы можете посмотреть [этот вопрос] (http://stackoverflow.com/questions/439799/whats-a-good-java-curses-like-library-for-terminal-applications) для более тщательного контроля. –

+0

хорошо, может быть, я буду использовать jframe вместо textarea: D спасибо! – reox

Смежные вопросы