Java 需要将文本从控制台重定向到JTextArea/JTextPane的帮助吗

Java 需要将文本从控制台重定向到JTextArea/JTextPane的帮助吗,java,Java,我正在尝试向JTextArea/JTextPane显示控制台输出 我的类有几个包含system.out.println()语句的方法 我遵循了几个示例,但没有找到一个适合我要求的完美示例 以下是我使用的代码片段: private JTextArea textArea = new JTextArea(30, 30); JScrollPane scrollPane = new JScrollPane(textArea); private TextAreaOutputStream taOutputS

我正在尝试向JTextArea/JTextPane显示控制台输出

我的类有几个包含system.out.println()语句的方法

我遵循了几个示例,但没有找到一个适合我要求的完美示例

以下是我使用的代码片段:

private JTextArea textArea = new JTextArea(30, 30);
JScrollPane scrollPane = new JScrollPane(textArea);
private  TextAreaOutputStream taOutputStream = new TextAreaOutputStream(
            textArea, "Test");

System.setOut(new PrintStream(taOutputStream));
我的TextAreaOutPutStream如下所示:

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();
    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 {
    textArea.append(String.valueOf((char)b));
    textArea.setCaretPosition(textArea.getDocument().getLength());
    }
}
现在我的问题是,只有在整个程序完成后,我才能在jtextArea上获得输出

当程序遇到system.out.println()并立即将其输出打印到JtextArea时,如何将其逐个打印出来

我见过几个例子,其中他们指定使用swingworker,但在这里,当我有几个方法时,我如何使用它


请提供您的解决方案。

在自动刷新模式下使用
PrintStream

System.setOut(new PrintStream(taOutputStream, true));

我尝试过使用你的代码(在NetBeans中),效果非常好。
行的位置在哪里?新文本区域输出流(…)?

是否已检查此项?或尝试自动刷新流:System.setOut(新打印流(taOutputStream,true));我试过了,但还是不走运。。。它只有在程序完成时才会被打印出来。我已经在类的构造函数中使用它作为第一个语句。如何放置:TextAreaOutputStream taOutputStream=newtextareaoutputstream(textArea,“Test”);系统放样(新打印流(taOutputStream));最后(如果可能的话,在构造函数的末尾或实例化main/gui类的那一行,这就是我所做的),仍然是相同的问题。。我把它放在我将实例化GUI的地方,但仍然是相同的结果