如何等待用户点击特定密钥?

时间:2014-05-14 15:19:48

标签: java javafx javafx-8

我正在使用JavaFX8创建一个游戏,该游戏在TextFlow中显示选项并等待用户输入特定键然后更改文本。

例如: 创造角色? (继续 (E)XIT

用户按下键盘上的“C”键,显示如下: 选择性别。 (男 (女 (B)ACK

按'M'进入下一个屏幕,依此类推。 'B'将它们带回Create Character“状态”。

没有其他用户输入可用。没有按钮,没有文字区域,没有。他们只需按一个键即可更改TextFlow中的文本。

我有一个正确注册按键的EventHandler,并将结果放在一个静态String字段中,因此可以通过类中的任何方法访问它。有没有办法检查方法中的变量?它等待用户按下一个键,根据有效值数组(根据TextFlow中显示的选项)检查值,返回它或继续检查。

无限循环导致程序崩溃。这是异步的,因为用户可以随时按下有效/无效的密钥。

我研究过JavaFX并发(Task,Service,Worker),但此时对我来说似乎太复杂了。也许有一种我忽略的简单方法?

以下是我的EventHandler的一些代码,它的工作正常。

static String userInput = "";
static EventHandler<KeyEvent> keyEvent=null;

public void start(Stage stage) {

        /*bunch of code*/
        keyEvent = new EventHandler<KeyEvent>(){
            public void handle(KeyEvent ke)
            {
                userInput = String.valueOf(ke.getCharacter());
                System.out.print(userInput);
            }
        };
        scene.setOnKeyTyped(keyEvent);
}

1 个答案:

答案 0 :(得分:0)

创建一个方法......比如......

void readInputCharacter(char ch){
    //code to determine what to do with this input
    //end with a check to see if there was valid input, if so redraw the text
}

然后从那里的处理程序中调用此方法。