2

当社は最近、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.

お客様のデモ システムで正しく動作するため、このコードが正しいことはわかっています。

しかし、アプリケーションを実行すると、ハンドル メソッドは実行されません。しかし、keyTyped イベントを keyReleased イベントに置き換えると機能します。

私の質問は、どの要因がこの行動に影響を与える可能性があるかということです.

いずれにせよ、コードを変更することは問題外です。さらに、私が読んだことから、キーの組み合わせをより適切に処理するため、keyReleased を使用するよりも keyTyped イベントを使用することをお勧めします。

プロジェクトを 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 に答える