package test.win; import java.awt.Dimension; import java.awt.event.HierarchyBoundsListener; import java.awt.event.HierarchyEvent; import java.io.IOException; import java.io.OutputStream; import java.io.PrintStream; import java.util.Date; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.SpringLayout; import javax.swing.SwingUtilities; public class MyFrame extends JFrame implements Runnable { private JTextArea textArea; private MyFrame thisFrame; public MyFrame() { this.textArea = new JTextArea(); this.thisFrame = this; this.setOut(); this.getContentPane().setLayout(new SpringLayout()); JScrollPane sPane = new JScrollPane(this.textArea); sPane.addHierarchyBoundsListener(new HierarchyBoundsListener() { @Override public void ancestorMoved(HierarchyEvent e) { // TODO Auto-generated method stub } @Override public void ancestorResized(HierarchyEvent e) { // TODO Auto-generated method stub JScrollPane pane = (JScrollPane) e.getSource(); pane.setPreferredSize(new Dimension(thisFrame.getContentPane().getWidth(), thisFrame.getContentPane().getHeight())); } }); this.getContentPane().add(sPane); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(300, 300); this.setLocation(300, 300); this.setVisible(true); } private void appendText(final String text) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { // TODO Auto-generated method stub textArea.append(text); } }); } private void setOut() { OutputStream os = new OutputStream() { @Override public void write(int b) throws IOException { // TODO Auto-generated method stub appendText(String.valueOf((char) b)); } @Override public void write(byte[] b, int off, int len) throws IOException { // TODO Auto-generated method stub appendText(new String(b, off, len)); } @Override public void write(byte[] b) throws IOException { // TODO Auto-generated method stub write(b, 0, b.length); } }; System.setErr(new PrintStream(os, true)); System.setOut(new PrintStream(os, true)); } @Override public void run() { while (true) { // TODO Auto-generated method stub try { Thread.sleep(1000); System.out.println(new Date()); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new Thread(new MyFrame()).start(); } }