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