我们公司最近收到了我们将进一步开发的 JavaFX 应用程序的源代码。我目前正在搭建开发环境,遇到了一个谷歌解决不了的问题。
该应用程序包含一个自动完成组合框,当用户输入搜索字符串时,它会过滤可用的值。代码如下:
final ComboBox<Sifrant> inputCB = new ComboBox<Sifrant>();
inputCB.setId(formName + "_" + field);
inputCB.setEditable(true);
inputCB.setPrefWidth(nextControlDoubleSize ? 500 : 300);
inputCB.setOnKeyTyped(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
//etc. etc.
我知道这段代码是正确的,因为它可以在我们客户的演示系统上正常工作。
但是当我运行应用程序时,handle 方法永远不会执行。但如果我用 keyReleased 事件替换 keyTyped 事件,它确实有效。
我的问题是,哪些因素可能会影响这种行为?
更改代码是不可能的,因为它无论如何都适用于我们的客户。此外,根据我的阅读,应该首选使用 keyTyped 事件而不是使用 keyReleased,因为它可以更好地处理组合键。
我正在使用 NetBeans 8.0 和 Java 1.7.0_45 运行该项目。之前开发该应用程序的公司使用 NetBeans 7.2.1 和 Java 1.7.0_6。