Redirecting System.in , System.out to JTextArea
Hello,
I need to know how to redirect System.in and System.out to a
JTextArea. The following is my initial attempt to write it's code. I
know it's missing alot (maybe major) stuff.
--begin--
import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.awt.event.*;
class ConsolePanel extends JPanel implements KeyListener{
private JTextArea consoleTextArea;
private ByteArrayInputStream inStream;
private ByteArrayOutputStream outStream;
//private byte[] bufferByteArray;
public ConsolePanel()
{
super();
outStream = new ByteArrayOutputStream();
Runnable r = new Runnable() {
public void run() {
try {
while(outStream.size()!= 0)
{
consoleTextArea.setText(outStream.toString());
}
} catch (Exception ie) {
ie.printStackTrace();
}
}
};
new Thread(r).start();
consoleTextArea = new JTextArea();
setLayout(new GridLayout(1,1));
this.setBorder(BorderFactory.createLineBorder(Color.gray));
add(consoleTextArea);
}
public ByteArrayOutputStream getOutputStream()
{
return outStream;
}
public ByteArrayInputStream getInputStream()
{
return inStream;
}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {}
public void keyPressed(KeyEvent e) {
String line = "";
int key = e.getKeyCode();
if (key != KeyEvent.VK_ENTER) {
line += ""+ e.getKeyChar();
}
else
{
try
{
inStream = new ByteArrayInputStream(line.getBytes());
//inStream.read(line.getBytes());
}catch(Exception exc)
{
exc.printStackTrace();
}
}
}
}
--end---
What i am trying to do is to connect an InputStream and and an
OutputStream to the textArea. After that is done , ill get the in/out
stream from another class by the methods "getOutputStream()" and
"getInputStream()" and do System.setIn() and System.setOut from the
class that got a hold of the stream objects by the previously
mentioned methods.
What am i doing wrong ? (I know im doing alot wrong , but im kinda new
to I/O).
Thanx in advance for ur help
Ahmed Ashmawy