Popular Posts
javax.net.ssl.SSLHandshakeException: Connection closed by peer in Android 5.0 Lollipop Recently, there is a error occurs when access website via ssl connection like below although it worked fine several days ago. // Enable SSL... Close window without confirm (I.E only) window.opener=null; window.open('','_self'); window.close(); focus on validating function focusOnInvalidControl() {     for (var i = 0; i < Page_Validators.length; i++) {         if (!Page_Validators[i].isvalid) {     ...
Stats
Redirect System.out & System.err to JTextarea
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();
    }

}