我将System.out
和System.err
重定向到textPane
中的scrollPane
,以显示用户正在发生的事情的日志。
我还实现了一个简单的按钮,按下它时会将textPane
文本设置为“”以清除它。
我现在发现的是.setText("")
实际上保留了之前显示的内容的格式,并保留了断路器。例如,我将System.err
显示为红色,如果在我的清除按钮中,我将.setText("")
替换为.setText(“test”),然后如果我在textPane
中有红色文本则文本将被 test 替换,但单词test将为红色!
现在我的问题是,如果我按下清除按钮一次,每当新消息到达textPane
时,它将在开始时有一个不必要的永久空白行。所以这是我的问题:
按下将使用System.out
按清除按钮
再次按下步骤1中的按钮
清除并按下将使用System.err
清除并按下将使用System.err
因此,您可以看到我是否使用System.out
然后使用.setText("")
,然后System.out
会被窃听。如果我使用System.err
然后使用.setText("")
,那么System.err
会被窃听。
答案 0 :(得分:2)
听起来您可能正在使用Message Console类来进行日志记录。
确实有一个错误,当文档中的文本被清除时,它会将EOF字符串添加到Document。
无论如何,我刚修复了这个bug,你可以下载新版本。
答案 1 :(得分:0)
对于文本颜色,当您调用System.err时,将文本颜色更改为红色。重置颜色的最佳方法是:在构造函数中,保存文本区域的原始颜色,如下所示:Color originalColor = inputText.getForeground();
,当您要重置文本时,请执行以下操作:
inputText.setForeground(originalColor);
inputText.setText("");
关于开头的空行,基本上不应该放这行,但也许它正在发生,因为你正在使用System.out。您可以尝试使用setText()而不是System.out来显示文本。