- 注册时间
- 2004-9-4
- 最后登录
- 1970-1-1
|
做Web服务器时候的收获,原始代码是 EastSun 给我的,不过看着有点乱,而且不是很清楚,于是总结一篇,供大家分享~
原理:
新建一个MyOutputStream类继承于OutputStream类,覆盖原来OutputStream类中的write方法,使其将字符串信息追加到指定的TextArea中。然后用MyOutputStream对象创建一个PrintStream对象,并将后者设定为当前的标准输出即可。
而且这样做了之后不需要去改变原来已有的代码,如果不调用System.setOut(),那么程序便会还是按照原来的方式将信息输出到Console。
- public class Shell extends JFrame{
- private JTextArea txtLog;
- private PrintStream printStream;
- ......
-
- public Shell(){
- // 用自己的重载的OutputStream创建一个PrintStream
- printStream = new PrintStream(new MyOutputStream());
- // 指定标准输出到自己创建的PrintStream
- System.setOut(printStream);
- System.setErr(printStream);
- ......
- }
- public class MyOutputStream extends OutputStream{
- public void write(int arg0) throws IOException {
- // 写入指定的字节,忽略
- }
-
- public void write(byte data[]) throws IOException{
- // 追加一行字符串
- txtLog.append(new String(data));
- }
-
- public void write(byte data[], int off, int len) throws IOException {
- // 追加一行字符串中指定的部分,这个最重要
- txtLog.append(new String(data, off, len));
- // 移动TextArea的光标到最后,实现自动滚动
- txtLog.setCaretPosition(txtLog.getText().length());
- }
- }
- }
复制代码 |
|