我正在使用JavaFX进行分配,并且该程序应该对几个键盘命令做出反应。教授退回了我发送给他的可执行文件.jar,抱怨说当他按下Enter键时什么也没发生。其他键盘输入在他的终端上都起作用。
我以为我可能错过了一些东西,所以我检查了一下,最后,“ Enter”键在Windows 7 PC和Windows 10笔记本电脑上均按预期工作。之后,我简短地编辑了该程序,以便将所有按键输入都打印到文本文件中,而不管上下文如何,然后将该版本发送给教授。在他的答复中,证实了由于某种原因,该应用程序根本没有在教授一侧注册被按下的“ Enter”键,而其他键仍然可以正常工作。
我使用的代码非常原始,我只是为了测试该问题而编写的,这里是 println 的较短版本:
private void onKeyPressed(KeyEvent e)
{
System.out.println("Pressed key "+ e.getCode());
...
}
此函数在 start 方法中使用,其相关部分在此处:
public void start(Stage primaryStage)
{
root = new Group();
EventHandler<KeyEvent> e37 = dog ->
{
onKeyPressed(dog);
};
scene = new Scene(root, width, height);
scene.addEventHandler(KeyEvent.KEY_PRESSED, e37);
primaryStage.setScene(scene);
primaryStage.show();
}
main 方法如下:
public static void main(String[] args)
{
launch(args);
}
来自日志文件的示例:
按下TAB键
按Enter键
按下TAB键
按下键
按下向上键
按Enter键
在我教授的PC上,它看起来很相似,只有“ Enter”(也就是我们同时发现的“ Tab”)键没有任何结果:
按下DIGIT4键
按ESCAPE键
按了BACK_SPACE键
按删除键
按下添加键
按SUBTRACT键
多次按下键
按分割键
按下了BACK_SP键
教授正在使用Windows10。如上所述,我同时使用Windows 7和Windows 10尝试重现该错误,但无济于事。使用JavaFX 8,教授在回答我的电子邮件后将立即添加该教授的版本。
关于什么可能导致这种行为的任何想法?
编辑:忘记了,按键输入是使用JavaFX的KeyEvent处理的
EDIT2:原来是版本问题。我安装了JavaFX 12,并且出现了问题。正在努力修复这些问题。
答案 0 :(得分:0)
解决了,原来这名教授正在使用JavaFX 12(而我正在使用8)。安装后,行为便匹配了。