Redirect output(stdout/stderr) to a frame

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

import java.awt.*;

import java.awt.event.*;

import java.io.*;

public class RedirectedFrame extends Frame {

TextArea aTextArea = new TextArea();

PrintStream aPrintStream =

new PrintStream(

new FilteredStream(

new ByteArrayOutputStream()));

boolean logFile;

RedirectedFrame(boolean logFile) {

this.logFile = logFile;

System.setOut(aPrintStream);

System.setErr(aPrintStream);

setTitle("Error message");

setSize(500,300);

setLayout(new BorderLayout());

add("Center" , aTextArea);

displayLog();

addWindowListener

(new WindowAdapter() {

public void windowClosing(WindowEvent e) {

dispose();

}

}

);

}

class FilteredStream extends FilterOutputStream {

public FilteredStream(OutputStream aStream) {

super(aStream);

}

public void write(byte b[]) throws IOException {

String aString = new String(b);

aTextArea.append(aString);

}

public void write(byte b[], int off, int len) throws IOException {

String aString = new String(b , off , len);

aTextArea.append(aString);

if (logFile) {

FileWriter aWriter = new FileWriter("error.log", true);

aWriter.write(aString);

aWriter.close();

}

}

}

public void displayLog() {

Dimension dim = getToolkit().getScreenSize();

Rectangle abounds = getBounds();

Dimension dd = getSize();

setLocation((dim.width - abounds.width) / 2,

(dim.height - abounds.height) / 2);

setVisible(true);

requestFocus();

}

public static void main(String s[]){

try {

// force an exception for demonstration purpose

Class.forName("unknown").newInstance();

}

catch (Exception e) {

// for applet, always RedirectedFrame(false)

RedirectedFrame r = new RedirectedFrame(true);

e.printStackTrace();

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航