2

我们公司最近收到了我们将进一步开发的 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。

4

1 回答 1

0

没关系,这个问题有一个非常明显的答案。当我切换到 JDK 1.7.0_6 时,一切都开始正常工作了。

但我想这个线程的存在很有用,以防其他人陷入类似的问题。

由于代码显然没有任何问题,这可能意味着它是在版本 1.7.0_6 和 1.7.0_45 之间引入 Java 的错误。

于 2014-09-19T09:17:04.367 回答