问题描述
我成功地将 System.out
和 System.err
重定向到了 JTextArea,参考这篇文章:https://www.codejava.net/java-se/swing/redirect-standard-output-streams-to-jtextarea。
但是两种类型的消息都以相同的字体颜色显示。 我希望 System.err 消息以红色显示,而 System.out 消息以定义的前景色(当前为白色)显示。可能吗?
解决方法
不,这是不可能的。 JTextArea 是一个简单的文本组件,只能显示一种字体和一种字体颜色。如果您需要更多复杂性,则需要使用更复杂、功能更强大(且难以使用)的组件,例如 JTextPane 或 JEditorPane。
另一种选择是使用 JList 来显示来自系统的文本,并为其提供一个渲染器,使其知道以黑色显示正常消息,以红色显示错误消息。这可以看起来像一个 JTextArea,但如果单个消息占用多于一行,确实会遇到一些困难。