Was willst du später erreichen?
Möchtest du deinen String später nur irgendwo anzeigen/abspeichern(1) oder mit einem Date(2) arbeiten?
1)
Bei ersteren würde ich wie MiMi gepostet mit einem Listener arbeiten.
2)
Warum willst du zwingend den Buchstaben nicht anzeigen lassen?
Ich mein was bringt dir es, wenn du dann du meinetwegen Zahlen und . anzeigen lässt, wenn dein Datum dann keinem Gültigen Format entspricht.
Nehmen wir als Beispiel 10.10.1200.2009.
Hier stehen auch nur Zahlen und Punkte. Du müsstest noch viel drumherumprogrammieren, um solche Fälle ausschließen zu können.
Da würde ich eher wirklich auf den DateFormatter zurückgreifen und auf die Überprüfung nach jedem Zeichen verzichten. Dafür überprüft er, wenn du fertig bist mit der Eingabe (ActionEvent, Focus verloren...). *
Die Eingabe kannst du dann einfach in ein Date-Format umwandeln und später in ein einheitliches Ausgabeformat per SimpleDateFormat darstellen.
Java:
Dated = (Date)formattedTextField.getValue();
Edit:
* Angenommen du nimmst den default Kontruktor von DateFormatter, dann ist dein Format auf die Version mit Zahlen und Punkten definiert. Wenn du dann meinetwegen 10.5.2009 eingibst, macht er automatisch 10.05.2009 daraus. Gibst du dann etwas ungültiges ein springt er auf dieses Datum zurück oder übernimt auch teilweise richtige Angaben. So macht er dann aus 1a.06.2009 10.06.2009