package com.macfaq.awt; import java.awt.*; import java.io.*; public class StreamedTextArea extends TextArea { OutputStream theOutput = new TextAreaOutputStream(); public StreamedTextArea() { this("", 0, 0, SCROLLBARS_BOTH); } public StreamedTextArea(String text) { this(text, 0, 0, SCROLLBARS_BOTH); } public StreamedTextArea(int rows, int columns) { this("", rows, columns, SCROLLBARS_BOTH); } public StreamedTextArea(String text, int rows, int columns) { this(text, rows, columns, SCROLLBARS_BOTH); } public StreamedTextArea(String text, int rows, int columns, int scrollbars) { super(text, rows, columns, scrollbars); setEditable(false); } public OutputStream getOutputStream() { return theOutput; } class TextAreaOutputStream extends OutputStream { public synchronized void write(int b) { // recall that the int should really just be a byte b &= 0x000000FF; // must convert byte to a char in order to append it char c = (char) b; append(String.valueOf(c)); } public synchronized void write(byte[] b, int offset, int length) { append(new String(b, offset, length)); } } }