web-dev-qa-db-fra.com

Value Change Listener pour le TextField de JavaFX

J'aimerais ajouter une sorte de listener à mon JavaFX's TextField qui, à chaque fois qu'un utilisateur change la valeur de TextField, l’application imprime quelque chose sur la console.

J'ai cherché et je trouve la question très similaire suivante: Value Change Listener to JTextField

La réponse à la question mentionnée est très claire et efficace, mais elle n’est malheureusement utile que pour JTextField (pas JavaFX's TextField) car il indique que vous devez utiliser DocumentListener comme ceci:

// 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();
  }

mais dans TextFields de JavaFX, vous ne pouvez pas le faire. Alors? Quelle est la solution?

(décrire avec du code peut être très bon mais si ce n'est pas possible, tout indice sera apprécié)

28
Elyas Hadizadeh

Ajoutez un écouteur à la propriété textField du TextField:

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