2010/05/30

javaで標準出力/エラーをテキストエリアにも出力する.

 http://allabout.co.jp/internet/java/closeup/CU20060306A/index2.htm
 とかに載っているのは,標準出力をテキストエリアに出力してしまうので
コンソールの出力は無くなってしまう.
テキストエリアとコンソールの両方に出力したい時は以下


public class JTextAreaOutputStream extends OutputStream { 
    JTextArea ta;
    PrintStream system;
    public JTextAreaOutputStream(PrintStream p, JTextArea t) {
      super();
      ta = t;
      system=p;
    }
    public void write(int i) {
      char[] chars = new char[1];
      chars[0] = (char) i;
      String s = new String(chars);
      ta.append(s);
      system.write(i);
    }
}
を作っておいて,どこかに

// set up streams
System.setOut(new PrintStream(new JTextAreaOutputStream(System.out,outArea)));
System.setErr(new PrintStream(new JTextAreaOutputStream(System.out,outArea)));

を書けばよい.
これでコンソールとテキストエリアに標準出力される.

0 件のコメント: