JavaFX:ComboBox上的KeyTyped事件未触发

时间:2014-09-19 07:57:49

标签: java combobox javafx eventhandler

我们公司最近收到了JavaFX应用程序的源代码,我们将进一步开发它。我目前正在设置开发环境,我遇到了Google无法解决的问题。

该应用程序包含一个自动完成组合框,可在用户输入搜索字符串时过滤可用值。代码如下:

        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。

1 个答案:

答案 0 :(得分:0)

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

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

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