我遇到了如何在 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 中也一一显示。
谁能帮帮我吗。非常感谢!