java - 如何将多个类中的多个 systen.out.println() 显示到单个 GUI 中,例如 JTextArea
问题描述
如何将多个类中的多个 systen.out.println() 显示到单个 GUI 中,例如 JTextArea。
嗨,我正在做一个学校项目,我有几个类有 system.out.println() 来显示控制台输出。但是现在我需要将控制台输出显示到 gui 中。
例如,第一类有 system.out.println("class one"); 第二类有 system.out.println("class 2");
我有一个 GUI 类,guiJava.class,其中包含 JtextArea。
任何人都知道如何做到这一点?
我在网上看的是使用这段代码:
PrintStream standardOut;
PrintStream printStream = new PrintStream(new CustomOutputStream(jTextArea1));
// keeps reference of standard output stream
standardOut = System.out;
// re-assigns standard output stream and error output stream
System.setOut(printStream);
System.setErr(printStream);
但这似乎只显示了 guiJava.class 中的 System.out.println(),而不是 class 1 和 class2 中的所有 sysout 行。
解决方案
public static void main(String [] args) {
JTextArea area = new JTextArea();
PrintStream stream = new PrintStream(new TextAreaOutputStream(area));
System.setOut(stream);
System.setErr(stream);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new JScrollPane(area));
frame.setLocationRelativeTo(null);
frame.setSize(400, 200);
frame.setVisible(true);
System.out.println();
System.out.println("test");
System.out.println();
System.out.println("test 2");
System.out.println();
System.out.println("test 3");
}
public static class TextAreaOutputStream extends OutputStream {
private JTextArea textArea;
public TextAreaOutputStream(JTextArea textArea) {
this.textArea = textArea;
}
@Override
public void write(int character) throws IOException {
textArea.append(String.valueOf((char) character));
textArea.setCaretPosition(textArea.getDocument().getLength());
}
}
推荐阅读
- python - 你如何修复 ModuleNotFoundError:没有名为“google_auth_oauthlib”的模块?
- powershell - 使用PS脚本将颜色填充到Excel工作表中的第一行
- sbt - SBT 中的 :: 和 / 有什么区别?
- javascript - 如何正确格式化我从 API 调用中获取的数据
- google-apps-script - 好表如何在函数执行时添加通知,当函数“执行成功”时自动关闭?
- powershell - POwershell 比较具有不同标题的 CSV 文件
- node.js - 无法在 Node.Js 的不同文件中调用 Mongoose 函数
- selenium - 在 Hound 中单击后如何断言元素存在?
- node.js - Electron:如何从已安装的包中公开 console.log 调用?
- apache-kafka - 使用来自 Kafka docker 镜像的奇怪数据