如何将所有控制台输出重定向到GUI文本框?

11
我目前有一个程序,以各种方式打印文本行到屏幕上,例如'System.out.println()'语句和用于将数组中的所有元素打印到屏幕上的for循环。我现在正在为这个程序添加GUI。我的问题是:我想把在Eclipse控制台中打印的所有内容都打印到我的GUI文本框中。这是否可能?如果可能,我该怎么做呢?
谢谢您的帮助。

真的抱歉,sqook,我没有看到您的编辑,我已经更改了原始问题。 - Fabian Steeg
2个回答

22

查看此篇博客文章,标题为将System.out和System.err重定向到JTextPane或JTextArea。它描述了几乎您所需的所有内容。

基本思想是创建自己的专门输出流。在write()方法的实现中,您调用一些代码将新数据附加到文本框。然后,通过调用System.setOut()或System.setErr()将这个新的输出流设置为您的System.out。

注意:该文章缺少一件事。 您需要在单独的线程中启动程序


谢谢这个想法。这个网站似乎在同一个类中有它想要打印到文本区域的内容和GUI。我想要保持这些类分开。 - guess who
他修复了2个线程的问题。现在教程是正确的。 - MJBZA

7
一个想法:
创建自己的PrintStream,将所有内容输出到这个文本框中。 然后将这个新的PrintStream设置为标准输出流,像这样:standard output
System.setOut(myPrintStream());

你能否提供更多细节,告诉我如何实现这个想法,因为打印是在一个单独的类中进行的?谢谢。 - guess who
只需要看一下theomega发布的帖子就可以了! - Romain Linsolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接