当社は最近、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 を使用していました。