0

Java lanterna ライブラリ ターミナルからのユーザー入力の読み取りに問題があります。キーを打つと、システムが特定の文字を端末に出力するようにしたいと思います。私はこのコードを使用します:

パブリック クラス スネーク {

public static void main(String[] args) {

    Terminal terminal = TerminalFacade.createTerminal(System.in, System.out,       Charset.forName("UTF8"));
    terminal.enterPrivateMode();
    Key key =terminal.readInput();      
    if (key.getKind() == Key.Kind.Tab)

    {
        terminal.moveCursor(100, 100);
        terminal.putCharacter('D');

    }

}

}

残念ながら、私はターミナルを開いただけで、何も入力できません。なぜこれが起こるのか誰にも分かりますか?

4

1 に答える 1

2

指定されたコードに基づいて、メイン メソッドの実行が完了する前に、if ステートメントを 1 回だけ実行しているようです。

while ループを実装して、次のように入力を継続的に検索してみてください。

public static void main(String[] args) {

    Terminal terminal = TerminalFacade.createTerminal(System.in, System.out, Charset.forName("UTF8"));
    terminal.enterPrivateMode();

    // I would recommend changing "true" to a boolean variable that you can flip with a key press. 
    // For example, the "esc" key to exit the while loop and close the program  
    Key key;
    while(true){
        // Read input
        key = terminal.readInput();

        // Check the input for the "tab" key
        if (key.getKind() == Key.Kind.Tab){
            terminal.moveCursor(100, 100);
            terminal.putCharacter('D');
        }
    }

    terminal.exitPrivateMode();
}

さらに、Lanterna 開発ガイドを確認してください。

于 2014-11-27T08:23:09.820 に答える