saída System.out.println para JTextArea
Pergunta
Gostaria de sempre que eu chamar System.out.println para anexar a um determinado JTextArea, sem ter que mudar todas as chamadas para System.out.println ... Isso é possível?
Obrigado.
Solução
Versões de Java desde 1.5 tem System.setOut()
que lhe permitem instalar o seu próprio PrintStream
. Basta criar uma OutputStream
simples, que acrescenta os dados que recebem por meio write()
Em seguida, envolvê-la em um PrintStream
e instalá-lo.
Outras dicas
Bem, você pode fazê-lo usando o método jTextArea.append("Your String")
Eu não acho que há uma maneira simples. Eu geralmente tentam evitar chamadas System.out
no meu código para exatamente esse tipo de razão. Se você tem um método como (por exemplo) MyUtil.myOutput()
então você pode fazer uma única alteração e redirecionar-lo onde quiser
Eu suponho que você poderia usar alguma forma de AspectJ para fazê-lo, mas eu acho que pode ser um exagero. O que eu faria, porém, é criar um método que faria tanto de impressão e de acréscimo.
public void printAndAppend(String text) {
System.out.println(text);
textArea.append(text);
}
Você pode, então, basta fazer uma global localizar e substituir para System.out.println
e substituí-lo com printAndAppend