java lanterna无法从终端读取输入

时间:2014-12-26 23:50:25

标签: java lanterna

使用lanterna包中的readInput()方法时遇到问题。我的代码分数

    Terminal terminal = TerminalFacade.createSwingTerminal();
    terminal.enterPrivateMode();
    Key key = terminal.readInput();
    if(key.getKind()==Key.Kind.Escape){
    terminal.moveCursor(6, 6);
    terminal.putCharacter('X');

不允许我在终端中进行任何输入,因此在检查key.getKind时会创建nullpointerexception。有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

readInput方法是非阻止的。这意味着它不会挂起,直到找到输入(如Scanner那样)。因此,您需要自己的"阻止方法"等待输入:

Key key = terminal.readInput();
while(key == null) {
    Thread.sleep(5); //whatever low value
    key = terminal.readInput();
}
// here key will not be null, so no NullPointerException