私は簡単な編集可能なComboBoxを自動完成で構築しています。内部のTextFieldの内容に応じて、ComboBoxの内容をフィルタリングします。
私はそれをうまく機能させることができましたが、TextFieldから文字を削除するときに自動補完ロジックを再適用することに問題があります。JavaFX ComboBox keyeventのTextFieldコンテンツ
私が見たことから、キーを押したイベントでは、テキストフィールドの内容にまだ追加された文字は含まれていません。
TextFieldのコンテンツをシミュレートするKeyEventの文字列バージョンを追加する単純なロジックを作成しました。私は基本的に
私のロジックを適用するための完全なテキストを持っている必要があり、このbeacuseを作った:
// In constructor
cmb.getEditor().setOnKeyPressed(this::handleOnKeyPressed);
public void handleOnKeyPressed(KeyEvent e) {
String text = comboBox.getEditor().getText() + e.getText();
// Filtering logic based on text
}
いくつかの文字を入力するときにこれがうまく動作しますが、バックスペースを押すか、キーを削除すると、ある(機能していませんコードごとに明らかです)。
キャレットの位置を確認し、キャレットの位置に基づいてバックスペース/削除文字の削除をシミュレートする方法があります。しかし、これはかなり面倒です...
これを行うための他の優しい方法がないのでしょうか?全文を直接入手することは可能ですか?最初は変更リスナーを追加することを考えましたが、TextFieldでは不可能と思われます。
アイデア?
ありがとうございます!
を)'のTextField – ItachiUchiha
はい、確かに、以下で検証された回答! – Xendar