我们公司最近收到了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。
答案 0 :(得分:0)
没关系,这个问题有一个非常明显的答案。当我切换到JDK 1.7.0_6时,这一切都开始正常工作。
但我认为这个线程存在是有用的,以防其他人陷入类似的问题。
由于代码没有明显错误,这可能意味着它是在1.7.0_6和1.7.0_45版本之间引入Java的错误。