重定向java控制台输出 到swing 的 jtextfild组件中

字体大小: 中小 标准 ->行高大小: 标准
import java.io.OutputStream;
import java.io.PrintStream;

import javax.swing.text.JTextComponent;
import javax.swing.SwingUtilities;  


public class MyPrintStream extends PrintStream {  
 
private JTextComponent text;
private StringBuffer sb = new StringBuffer();
   
   public MyPrintStream(OutputStream out, JTextComponent text) {  
       super(out);  
        this.text = text;  
   }
  
  /** 
     * 在这里重截,所有的打印方法都要调用的方法 
     */  
    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+"\n");
          text.setText(sb.toString());
         }
      });
   }
}

————————————————————————————————————————————————

在组件java类中

定义用到的组件jTextField1

private javax.swing.text.JTextComponent jTextField1;

在构造方法里面

initComponents();
  MyPrintStream mps = new MyPrintStream(System.out, jTextField1);  
  System.setOut(mps);  
  System.setErr(mps);

这样就能把系统输出 和错误信息 在jTextField1中显示了

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/69963.html