【发布时间】:2009-11-27 16:22:05
【问题描述】:
我希望每次调用 System.out.println 以附加到给定的 JTextArea,而不必更改对 System.out.println 的所有调用...这可能吗?
谢谢。
【问题讨论】:
我希望每次调用 System.out.println 以附加到给定的 JTextArea,而不必更改对 System.out.println 的所有调用...这可能吗?
谢谢。
【问题讨论】:
自 1.5 起的 Java 版本具有 System.setOut(),允许您安装自己的 PrintStream。只需创建一个简单的OutputStream,它会附加它通过write() 获得的数据,然后将其包装在PrintStream 中并安装它。
【讨论】:
你可以使用jTextArea.append("Your String") 方法来做到这一点
【讨论】:
我认为没有简单的方法。正是出于这种原因,我通常会尽量避免在我的代码中调用System.out。如果你有像(比如)MyUtil.myOutput() 这样的方法,那么你可以进行一次更改并将其重新路由到你想要的位置
【讨论】:
我想你可能会使用某种形式的AspectJ 来做到这一点,但我认为这可能是矫枉过正。我要做的是创建一个既可以打印又可以追加的方法。
public void printAndAppend(String text) {
System.out.println(text);
textArea.append(text);
}
然后您可以对System.out.println 进行全局查找和替换,然后将其替换为printAndAppend
【讨论】: