Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / March 2008

Tip: Looking for answers? Try searching our database.

Redirecting System.in , System.out to JTextArea

Thread view: 
ash - 23 Mar 2008 06:03 GMT
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
Janusch - 25 Mar 2008 08:50 GMT
> Hello,
>
[quoted text clipped - 96 lines]
>
> Ahmed Ashmawy

Hi,

you have to use java.lang.System.

static void     setErr(PrintStream err)
         Reassigns the "standard" error output stream.
static void     setIn(InputStream in)
         Reassigns the "standard" input stream.

For Example:

/*init in public ConsolePanel()*/
System.setIn(new MyInPrintStream());
System.setErr(new MyErrPrintStream());

/*impementation*/
class MyInPrintStream implements PrintStream{

  Color col;

  MyInPrintStream(){col=Color.BLACK;}

  /*Implement PrintStream and send all input to consoleTextArea*/

}

class MyErrPrintStream extends MyInPrintStream implements PrintStream{
  MyInPrintStream(){col=Color.RED;}
}

Janusch


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.