JFormattedTextField:Eingabe verbergen

hippo08

Grünschnabel
Hi

Wie kann ich eine Eingabe in einen TextField verbergen,so dass der Benutzer sie nicht sieht.

Ich habe ein FormattedTextField für Datumseingaben und möchte ,dass die Eingabe von Buchstaben ignoriert wird.
 
Ich hab doch schon ein FormattedTextField,dass nur Nummern akzeptiert.

Ich will ,dass ,wenn andere Zeichen in das TextField eingegeben werden ,diese auf dem Bildschirm nicht sichtbar sind !
 
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
 
Zuletzt bearbeitet:
Das zweite ist der Fall.Main Arbeitgeber möchte das so.

Ich hab jetzt einen MaskFormatter benutzt.Der funktioniert auch ganz gut.Leider gibt es folgendes Problem.

Ich erstelle ein FormattedTextField :

Code:
 _eingabe = new JFormattedTextField( new DateFormatter(DateFormat.getDateInstance (DateFormat.SHORT, Locale.GERMAN)))

Und installiere dann einen MaskFormatter :

Code:
try 
		  {
			new MaskFormatter("##.##.##").install(_eingabe);
		  } 
		  catch (ParseException e)
		  {
			
			e.printStackTrace();
		  }

Der MaskFormatter sorgt dafür ,dass der Benutzer keinen Mist eingeben kann und das FormattedTextField dafür ,dass das Datum auch stimmt.Allerdings klappt das nur einmal :( .Nach der ersten Korrektur funktioniert der MaskFormatter nicht mehr.
 
Zurück