We’ve all got code riddled with System.out.println() messages. We should use a logging framework, but often we’re in a rush and we end up writing to stdout because its simpler at the time.

If there are too many System.out.println() calls and we want to stop them going to the console then we can redirect stdout and stderr to a different stream using the setOut() and setErr() methods provided by the System class.

If we want to instead have them written to a Swing text component such as a JTextArea or JTextPane then what we need is an OutputStream subclass that will write to the text component.

The following code shows how that can achieved, resulting in System.out.println() call writing to your designated JTextComponent.