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

根据给定的代码,在 main 方法完成执行之前,您似乎只运行了一次 if 语句。

尝试实现一个 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 回答