I am working on JavaFX project. I need to perform some task on a JavaFX TextField
.
For example on the "on focus" event for the TextField
I want to print
System.out.println("Textfield on focus");
and on the "out focus" event it should print
System.out.println("Textfield out focus");
I thought it might be helpful to see an example which specifies the ChangeListener as an anonymous inner class like scottb mentioned.
TextField yourTextField = new TextField();
yourTextField.focusedProperty().addListener(new ChangeListener<Boolean>()
{
@Override
public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue)
{
if (newPropertyValue)
{
System.out.println("Textfield on focus");
}
else
{
System.out.println("Textfield out focus");
}
}
});
I hope this answer is helpful!
You can use the focusedProperty
of Node
to attach a ChangeListener
.
Extending the answer from Brendan: from JavaFX8 (as it comes with Java 8), a lambda expression combined with a ternary operator can make it really compact:
textField.focusedProperty().addListener((obs, oldVal, newVal) ->
System.out.println(newVal ? "Focused" : "Unfocused"));