1

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 が作成されます。なぜこれが起こるのか誰にも分かりますか?

4

2 に答える 2

2

メソッドはreadInputノンブロッキングです。これは、入力が見つかるまで (ie のように) ハングしないことを意味します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
于 2014-12-26T23:53:00.833 に答える