package com.elharo.io.ui; import javax.swing.*; import java.awt.Font; import java.io.*; public class JWritableTextArea extends JTextArea { private Writer writer = new BufferedWriter(new TextAreaWriter()); public JWritableTextArea() { this("", 0, 0); } public JWritableTextArea(String text) { this(text, 0, 0); } public JWritableTextArea(int rows, int columns) { this("", rows, columns); } public JWritableTextArea(String text, int rows, int columns) { super(text, rows, columns); setFont(new Font("Monospaced", Font.PLAIN, 12)); setEditable(false); } public Writer getWriter() { return writer; } public void reset() { this.setText(""); writer = new BufferedWriter(new TextAreaWriter()); } private class TextAreaWriter extends Writer { private boolean closed = false; public void close() { closed = true; } public void write(char[] text, int offset, int length) throws IOException { if (closed) throw new IOException("Write to closed stream"); JWritableTextArea.this.append(new String(text, offset, length)); } public void flush() {} } }