Как отобразить вывод консоли в Java JTextarea один за другим в цикле, когда запускается действие кнопки
У меня возникла проблема с тем, как отобразить вывод консоли в Jtextarea один за другим. Я успешно перенаправил вывод системной консоли в JTextarea. Но проблема в том, что в реальной системной консоли выходные данные отображаются один за другим (я установил функцию Thread.sleep (), поэтому результат будет отображаться, скажем, каждые пол секунды). Но в JTextarea вывод будет отображаться только один раз после завершения цикла, он не будет отображаться один за другим, как в реальной системной консоли.
цикл запускается кнопкой GUI. пожалуйста, посмотрите пример кода ниже. это всего лишь часть кода.
// Create a button.
but.setVerticalTextPosition(AbstractButton.CENTER);
but.setHorizontalTextPosition(AbstractButton.LEADING);
but.setActionCommand("publish");
but.addActionListener(this);
// Button action
public void actionPerformed(ActionEvent e) {
final JButton source = (JButton)e.getSource();
if(source.equals(but)){
for( int i = 0 ; i < 5 ; i++ ) {
System.out.println( i );
// regular textarea output
//JTextarea.append(Integer.toString(i));
try {
Thread.sleep( 500 );
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
как вы можете видеть, я использую System.out.println (i) в цикле, потому что я перенаправил вывод системной консоли в JTextarea, поэтому вывод находится в JTextarea.
проблема, как я упоминал выше, в реальной консоли выводит вывод по одному каждые 500 миллисекунд. Но в перенаправленной Jtextarea результат показывает один раз, когда весь цикл завершен. Я не знаю, почему это так. Я хочу, чтобы вывод отображался по одному также в перенаправленной JTextarea.
Может кто-нибудь мне помочь. Большое спасибо!