C
Chase Preuninger
For some reason the following InputStream gives subclasses of Reader a
hard time because they seem to be unable to read the data. What is
wrong with my Stream. Ex. With the BufferedReader class when I call
the readLine() method it blocks forever even though there are a couple
of \n in the data that is being outputted. Also I know my stream
works because the read() method gives me an int which can be cast to a
char showing the text that the stream contains.
package com.cpsoft.console;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class ConsoleInputStream extends InputStream
{
private StringBuffer buf = new StringBuffer();
private int pos = 0;
private JConsole con;
public ConsoleInputStream(JConsole c)
{
this.con = c;
synchronized(con)
{
EnterAction act = new EnterAction();
con.input.addActionListener(act);
con.enter.addActionListener(act);
}
}
public int read() throws IOException
{
while(buf.length() <= pos){}
return buf.charAt(pos++);
}
private class EnterAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
synchronized(con)
{
buf.append(con.input.getText() + "\n");
}
}
}
}
hard time because they seem to be unable to read the data. What is
wrong with my Stream. Ex. With the BufferedReader class when I call
the readLine() method it blocks forever even though there are a couple
of \n in the data that is being outputted. Also I know my stream
works because the read() method gives me an int which can be cast to a
char showing the text that the stream contains.
package com.cpsoft.console;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
public class ConsoleInputStream extends InputStream
{
private StringBuffer buf = new StringBuffer();
private int pos = 0;
private JConsole con;
public ConsoleInputStream(JConsole c)
{
this.con = c;
synchronized(con)
{
EnterAction act = new EnterAction();
con.input.addActionListener(act);
con.enter.addActionListener(act);
}
}
public int read() throws IOException
{
while(buf.length() <= pos){}
return buf.charAt(pos++);
}
private class EnterAction implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
synchronized(con)
{
buf.append(con.input.getText() + "\n");
}
}
}
}