Ciao a tutti, ho un problema in un programmino Java che riguarda lo standard input.

L'interfaccia grafica del programma prevede due TextArea, una dove vi compare lo standard output e nell'altra vorrei che vi fosse lo standard input, tipo la chat di messenger o un'altra qualsiasi. All'inizio premo un pulsante Start e inizia tutto.
Per l'output ho risolto con una classe MyPutputStream fatta così:
codice:
public class MyOutputStream extends OutputStream{
    private JTextArea jtxtOut;


    public MyOutputStream (JTextArea jtxtOut){
        this.jtxtOut = jtxtOut;
    }

    @Override
    public void write(int i) throws IOException {
        jtxtOut.append( String.valueOf( ( char )i ) );
    }

}
settando lo standard Output così, dove jtxtOut è la prima TextArea
codice:
PrintStream out = new PrintStream( new MyOutputStream( jtxtOut ) );
System.setOut( out );
Per l'input ho provato in tutti i modi ma non ci riesco. Il mio programma, dopo lo Start crea un array di elementi e mi stampa nella prima TextArea l'elenco. Ora io dovrei scegliere uno di questi elementi immettendo dei caratteri (a volte numeri a volte parole o anche frasi) e vorrei che accadesse come nello standard input cioè:
1- quando scrivo compare tutto nella seconda TextArea;
2- quando premo Invio i caratteri vengono stampati sulla prima TextArea e vengono "presi" dal programma come se ci fosse ad esempio la classe Scanner, del tipo
codice:
            int s=0;
            Scanner scan=new Scanner(System.in);
            s = scan.nextInt();
Facendo la stessa cosa dell'output per lo standard input, cioè un extends di InputStream non funziona. Questo è quello che ho provato a fare:
codice:
public class MyInputStream extends InputStream{
        private JTextArea jtxtIn;

        public MyInputStream (JTextArea jtxtIn){

        this.jtxtIn = jtxtIn;
    }

    @Override
    public int read() throws IOException {
        int inPtr=0;
        String s = jtxtIn.getText();
        if( inPtr >= s.length() ) return -1;
            else { inPtr++; return s.charAt(inPtr-1);}
       // throw new UnsupportedOperationException("Not supported yet.")
}
    public void write() throws IOException{
        int inPtr=0;
        String s = jtxtIn.getText();
        if( inPtr >= s.length() );
            else { inPtr++; System.out.print(s.charAt(inPtr-1));}
    }
}
con relativo
codice:
        InputStream input =  new MyInputStream( jtxtIn );
        System.setIn( input );
Qualcuno sa darmi una soluzione???? Vi prego aiutatemi, è urgente!!!
Spero di essere stato chiaro nell'esposizione del problema.
Grazie in anticipo a chi mi vorrà dare un mano.