我正在使用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);
}
答案 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
}
然后从那里的处理程序中调用此方法。