Java Swing JTextArea 中重定向的彩色 Java 控制台是否有可能?

问题描述

我成功地将 System.outSystem.err 重定向到了 JTextArea,参考这篇文章https://www.codejava.net/java-se/swing/redirect-standard-output-streams-to-jtextarea

但是两种类型的消息都以相同的字体颜色显示。 我希望 System.err 消息以红色显示,而 System.out 消息以定义的前景色(当前为白色)显示。可能吗?

解决方法

不,这是不可能的。 JTextArea 是一个简单的文本组件,只能显示一种字体和一种字体颜色。如果您需要更多复杂性,则需要使用更复杂、功能更强大(且难以使用)的组件,例如 JTextPane 或 JEditorPane。

另一种选择是使用 JList 来显示来自系统的文本,并为其提供一个渲染器,使其知道以黑色显示正常消息,以红色显示错误消息。这可以看起来像一个 JTextArea,但如果单个消息占用多于一行,确实会遇到一些困难。