web-dev-qa-db-ja.com

JavaFXのTextFieldの値変更リスナー

listenerJavaFX's TextFieldに追加して、ユーザーがTextFieldの値を変更すると、アプリケーションが何かをコンソールに出力するようにします。

私は検索しましたが、次の非常に似た質問を見つけました: Value Change Listener to JTextField

上記の質問の答えは非常に明確で効率的ですが、残念ながらJTextFieldJavaFX's TextFieldではなく)にのみ役立ちます。これは、次のようにDocumentListenerを使用する必要があるためです。

// Listen for changes in the text
textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    warn();
  }
  public void removeUpdate(DocumentEvent e) {
    warn();
  }
  public void insertUpdate(DocumentEvent e) {
    warn();
  }

ただし、JavaFXのTextFieldsでは実行できません。そう?解決策は何ですか?

(コードでの記述は非常に良い場合がありますが、それが不可能な場合は、どんなヒントも歓迎します)

28
Elyas Hadizadeh

TextFieldのtextPropertyにリスナーを追加します。

TextField textField = new TextField();
textField.textProperty().addListener((observable, oldValue, newValue) -> {
    System.out.println("textfield changed from " + oldValue + " to " + newValue);
});
81
Roland