Java控制台JPanel

Swa*_*wan 2 java console swing jpanel

您好可以在JPanel中绘制java控制台返回的内容吗?你有一个教程要遵循?谢谢sw

Hov*_*els 6

我不记得我在哪里找到了这个,但是我已经使用类I调用TextAreaOutputStream将输出流输出到JPanel中保存的JTextArea:

import java.io.IOException;
import java.io.OutputStream;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;

public class TextAreaOutputStream extends OutputStream {

    private final JTextArea textArea;
    private final StringBuilder sb = new StringBuilder();
    private String title;

    public TextAreaOutputStream(final JTextArea textArea, String title) {
        this.textArea = textArea;
        this.title = title;
        sb.append(title + "> ");
    }

    @Override
    public void flush() {
    }

    @Override
    public void close() {
    }

    @Override
    public void write(int b) throws IOException {

        if (b == '\r')
            return;

        if (b == '\n') {
            final String text = sb.toString() + "\n";
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    textArea.append(text);
                }
            });
            sb.setLength(0);
            sb.append(title).append("> ");
        }

        sb.append((char) b);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我将标准输出Stream重定向到此对象,正如Alex在上面的回答中提到的那样.