FileDocCategorySizeDatePackage
JStreamedTextArea.javaAPI DocExample1326Sun Mar 28 19:08:40 BST 1999com.macfaq.swing

JStreamedTextArea.java

package com.macfaq.swing;

import javax.swing.*;
import java.io.*;
import java.awt.*;


public class JStreamedTextArea extends JTextArea {

  OutputStream theOutput = new TextAreaOutputStream();

  public JStreamedTextArea() {
    this("", 12, 20);
  }

  public JStreamedTextArea(String text) {
    this(text, 12, 20);
  } 

  public JStreamedTextArea(int rows, int columns) {
    this("", rows, columns);
  }

  public JStreamedTextArea(String text, int rows, int columns) {
    super(text, rows, columns);
    this.setEditable(false); 
    this.setFont(new Font("Monospaced", Font.PLAIN, 12));
  }

  public OutputStream getOutputStream() {
    return theOutput;
  }
  
  public Dimension getMinimumSize() {
    return new Dimension(72, 200);
  }
  
  public Dimension getPreferredSize() {
    return new Dimension(60*12, getLineCount()*12);
  }
  
  class TextAreaOutputStream extends OutputStream {

    public 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 void write(byte[] b, int offset, int length) {

      append(new String(b, offset, length));

    }

  }

}