【发布时间】:2016-05-29 01:56:48
【问题描述】:
我一直在尝试查找有关我的错误的一些信息,但在过去几个小时内找不到任何相关信息。
我在控制器类中使用了这个关键事件处理方法。 onKeyPressed 位于根 BorderPane 上的 fxml 文件中。主类是标准的。
此方法是我的计算器应用程序的一部分,它从 keyCode 中提取一个字符并将其传递给其他方法。
问题是,正如在调试过程中看到的那样,在第一次按键时,它甚至不会尝试生成返回的字符串,而是直接跳转到方法的末尾。其他所有按下的键都正常处理。
如果我在最后一个花括号之前打印一些东西,它只会在第一次按键时打印在控制台上。
问题方法如下:
public void handleKeys() {
container.setOnKeyPressed(key -> {
String returned = key.getCode().toString().toLowerCase();
char chr = '0';
switch (returned) {
case "add":
chr = '+';
break;
default:
if (Character.toString(returned.charAt(returned.length() - 1)).matches("\\d") && returned.charAt(returned.length() - 2) != 'f') {
chr = returned.charAt(returned.length() - 1);
break;
}
}
handleSymbols(chr);
});
}
据我了解,在第一次按键时,setOnKeyPressed 方法被初始化,它会跳过以下代码。我想我应该以某种方式将最后一个花括号的过程转发回 键-> {部分。但是怎么做呢?
【问题讨论】: