ComboBox が内部に持つ TextField に対しての Listner 登録が必要になります。
例えば、次のような感じになります。
@FXML
private ComboBox<String> cmbbxSearchText;
(略)
// ComboBox 内の TextField の文字列の変化
cmbbxSearchText.getEditor().textProperty().addListener((observable, oldValue, newValue) -> {
System.out.println("cmbbx text changed from " + oldValue + " to " + newValue);
});
// ComboBox 内の TextField での KeyPressed
cmbbxSearchText.getEditor().setOnKeyPressed((event) -> {
System.out.println("onKeyPressed:" + event);
});
// ComboBox 内の TextField での KeyTyped
cmbbxSearchText.getEditor().setOnKeyTyped((event) -> {
System.out.println("onKeyTyped:" + event);
});
参考ページ
java - JavaFX - ComboBox listener for its texfield - Stack Overflow
ちなみに、上記サンプルの1つ目の ComboBox(内の TextField)の値の変化だけならば、
このページなどを見ると ComboBox の valueProperty() に対して Listener 登録すれば良いようです。
JavaFX に慣れた人ならば当たり前の話でしょうが、
各コントロールも内部的には Java(FX) Bean のプロパティとその監視・通知を行う Observer パターンを使って実装されています。
ですので、コントロールを使う側も、コントロール内部の変化等を知りたい場合には、該当のプロパティを探して、そこに Listener 登録するというのが一般的な実装になるようです。
この辺り、JavaFX 初心者がコントロールの操作について情報を調べる場合には、念頭に置いていると、ちょっとコツがつかめると思います。
0 件のコメント:
コメントを投稿