Java 需要将文本从控制台重定向到JTextArea/JTextPane的帮助吗
我正在尝试向JTextArea/JTextPane显示控制台输出 我的类有几个包含system.out.println()语句的方法 我遵循了几个示例,但没有找到一个适合我要求的完美示例 以下是我使用的代码片段: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
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的地方,但仍然是相同的结果