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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top