/** *//**
* 重写write()方法,将输出信息填充到GUI组件。
* @param buf
* @param off
* @param len
*/
@Override
public void write(byte[] buf, int off, int len) ...{
final String message = new String(buf, off, len);
SwingUtilities.invokeLater(new Runnable()...{
public void run()...{
sb.append(message);
component.setText(sb.toString());
}
});
}
}
类 GUIPrintStream,继承自 PrintStream 并且对它进行了一些修改。
GUIPrintStream 在构造函数中增加了一个 JTextComponent 变量,它就是我们的目标输出 GUI 组件,它规定了目标输出组件是一个文本组件。接下来覆写了 write(byte[] buf, int off, int len)方法,这个方法原来的作用是将 len 字节从指定的初始偏移量为 off 的 byte 数组写入此流,现在经过我们的修改,变成了将 byte 数组包装成 String 写入目标 GUI 组件。
简单的代码完成了将标准输出重定向到 GUI 的全过程。由此延伸,还可以将标准输出重定向到文本文件、从GUI获取标准输入等,就不一一介绍