Starting with JavaFX 8u40, you can set a TextFormatter object in a text field. This allows you to apply a filter / converter at the user input. Here is an example .
Listening to changes in a text property occurs with the lack of triggering two change events: one for initial input (lower case characters in your case) and another for corrected input (upper case characters). If there are other listeners in the text property, they will need to figure out both events and decide which event matters to them. The TextFormatter approach does not have this drawback.
source share