Here is the complete code, directly you can run this code and see output.
/* ImplementConsole.java */
import javax.swing.*;
import java.awt.*;
import java.text.*;
import java.io.*;
public class ImplementConsole extends JFrame
{
JTextArea console;
JScrollPane sp_console;
ImplementConsole()
{
setSize(700,350);
setTitle("http://simpleandeasycodes.blogspot.com/");
setLocation(100,100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridBagLayout());
console = new javax.swing.JTextArea();
console.setColumns(50);
console.setRows(15);
console.setText("Console Output...");
sp_console = new javax.swing.JScrollPane(console);
add(sp_console);
System.setOut(new PrintStream(new JTextAreaOutputStream(console)));
System.setErr(new PrintStream(new JTextAreaOutputStream(console)));
//starting new Thread for log writing
new Thread(new Runnable()
{
public void run()
{ try
{
writeLog();
}
catch (Exception ie)
{ }
}
}).start();
}
//inner class
public class JTextAreaOutputStream extends OutputStream
{
JTextArea ta;
public JTextAreaOutputStream(JTextArea t)
{
super();
ta = t;
}
public void write(int i)
{
ta.append(Character.toString((char)i));
}
public void write(char[] buf, int off, int len)
{
String s = new String(buf, off, len);
ta.append(s);
}
}
//function to write console log
public void writeLog()
{
for(int i=0; i< 10000; i++)
{
System.out.println("Console output : "+i);
// Make sure the last line is always visible
console.setCaretPosition(console.getDocument().getLength());
//just taking pause of 50ms
try
{
Thread.currentThread().sleep(50);
}
catch (Exception e)
{
System.out.println("Exception in Thread Sleep : "+e);
}
//to flush console log after specific number of lines.
if(console.getLineCount() > 1000)
console.setText("");
}
}
public static void main(String[] args)
{
JFrame obj = new ImplementConsole();
obj.setVisible(true);
}
}
Output