| 
 
 
 
 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();           }        }     }
 
 
  |    |