如何在eclipse中打印到textArea而不是console?

时间:2009-02-19 11:44:45

标签: java eclipse

我目前有一个程序,可以用各种方式(如'System.out.println()'语句)在屏幕上打印文本行,并循环打印数组中的所有元素进行屏幕显示。

我现在在一个单独的类中为这个程序添加一个GUI。我的问题是我想将打印到eclipse控制台的所有内容打印到我的GUI中的文本框中。这是否可能,如果是这样,我将如何做到这一点。

1 个答案:

答案 0 :(得分:6)

如果您真的想这样做,请将System OutputStream设置为PipedOutputStream,并将其连接到您读取的PipedInputStream,以便向组件添加文本,例如:

PipedOutputStream pOut = new PipedOutputStream();
System.setOut(new PrintStream(pOut));
PipedInputStream pIn = new PipedInputStream(pOut);
BufferedReader reader = new BufferedReader(new InputStreamReader(pIn));

然后,您可以从阅读器中读取并将其写入文本组件,例如:

while(appRunning) {
    try {
        String line = reader.readLine();
        if(line != null) {
            // Write line to component
        }
    } catch (IOException ex) {
        // Handle ex
    }
}

我建议您不要将System.out用于您的应用程序输出,它可以被任何东西使用(例如您决定使用的任何第三方库)。我使用某种类型的日志记录(java.util.logging,Log4J等)和适当的appender来写入你的组件。