17

How can I generate a new event to handle whenever TextField's text is changed?

void
  • 731
  • 2
  • 11
  • 26

3 Answers3

27

Or Use ChangeListener interface.

textField.textProperty().addListener(new ChangeListener<String>() {
    @Override
    public void changed(ObservableValue<? extends String> observable,
            String oldValue, String newValue) {

        System.out.println(" Text Changed to  " + newValue + ")\n");
    }
});
Fevly Pallar
  • 3,059
  • 2
  • 15
  • 19
20

Register a listener with the TextFields textProperty:

textField.textProperty().addListener((obs, oldText, newText) -> {
    System.out.println("Text changed from "+oldText+" to "+newText);
    // ...
});
James_D
  • 201,275
  • 16
  • 291
  • 322
2

my solution:

....
String temp;
....
//previously in some method when starting to take initial value of the textfield and save it in a temporal
temp=id_textfield.getText();
....
//when losing focus we check if the new value is different

id_textfield.focusedProperty().addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {

            //focus in
            if (newValue) {
                temp = id_textfield.getText();
            }

            //focus out
            if (oldValue) {

                if (!(temp.equals(id_textfield.getText()))) {
                    System.out.println("New String")
                }
            }

        }
    });
agriarte
  • 75
  • 8