Итак, я пытаюсь перенаправить текстовое поле в System.in. Я видел эту тему Redirect System.in to swing component, и, кажется, все работает:Переадресация Java System.in - InputStream.read, но ничего «возвращено»
private class SystemIn extends InputStream {
@Override
public int read() {
int x = GUIConsole.this.read();
System.out.println("Read called: returning " + x);
return x;
}
}
чтениями, кажется, выполняет правильно: у меня есть помощник
public static String readLine(String msg) {
String input = "";
InputStreamReader converter = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(converter);
while (input.length() == 0) {
try {
print(msg);
input = in.readLine().trim();
} catch (Exception ignore) {
//
}
}
return input;
}
И я называю
String in3 = SimpleConsole.readLine("Enter text: ");
System.out.println("You said: " + in3);
Печатается "Read called: returning #"
. Я получаю правильные коды символов, за которыми следует финальный -1, когда я что-то вызываю. Метод чтения блокируется до тех пор, пока вход не будет готов, как указано в документах.
Однако, я только получить "Read called..."
сообщения и следующую строку ("You said...
«) никогда не выполняет (он застрял еще чтение) я не могу для своей жизни выяснить, что проблема есть. - Если вы хотите увидеть больше код (хотя я думаю, что "Read called..."
сообщения показывают, что он делает правильно) просто дайте мне знать.
есть ли что-то еще, что я должен сделать, чтобы быть в состоянии назвать readLine
и получить ввод из текстового поля? Я также попытался переопределяя другие методы во входном потоке без везения (опять же, метод read
выполняется должным образом)
Похоже, что это ваш резиновый утиный отладчик. (-: См .: http://en.wikipedia.org/wiki/Rubber_duck_debugging –