Hallo zusammen!
Ich habe ein unschönes Problem mit meinem Swing-Formular.
Ausgangslage:
Ich benutze JFormattedTextField um dem Anwender vorzuschreiben was er eingeben darf (z.b. bei Postleitzahlen nur 5 Zahlen '#####').
Problem:
Wenn JFormattedtTextField so anwende wie unten im Code zu sehen, dann scheint das TextField so vorformatiert zu sein, dass sich das optische Verhalten wie im Bild zu sehen ergibt. Das finde ich ziemlich unschön, da ein Klick in das Feld nicht bewirkt, dass der Anwender am Anfang des Feldes editieren kann, sondern einfach mittendrin startet. Außerdem muss ich beim Auslesen die Textfelder trimmen damit ich nicht ein haufen angehängter Leerzeichen habe.
Frage:
Ist das Verhalten von JFormattedtTextField in Verbindung mit MaskFormatter so normal? Gibt es eine schönere Lösung?
In dem Beispiel soll das Namefeld auf maximal 40 beliebige Zeichen begrenzt werden. Die Überprüfung ob überhaupt etwas eingegeben wurde erfolgt seperat in einem Listener (tut auch nix zur Sache).
Zur Veranschaulichung des Problems habe ich den an für sich leeren
Inhalt markiert. Aber es sind schon Leerzeichen vorhanden (nämlich genau 40 Stück).
Ich habe ein unschönes Problem mit meinem Swing-Formular.
Ausgangslage:
Ich benutze JFormattedTextField um dem Anwender vorzuschreiben was er eingeben darf (z.b. bei Postleitzahlen nur 5 Zahlen '#####').
Problem:
Wenn JFormattedtTextField so anwende wie unten im Code zu sehen, dann scheint das TextField so vorformatiert zu sein, dass sich das optische Verhalten wie im Bild zu sehen ergibt. Das finde ich ziemlich unschön, da ein Klick in das Feld nicht bewirkt, dass der Anwender am Anfang des Feldes editieren kann, sondern einfach mittendrin startet. Außerdem muss ich beim Auslesen die Textfelder trimmen damit ich nicht ein haufen angehängter Leerzeichen habe.
Frage:
Ist das Verhalten von JFormattedtTextField in Verbindung mit MaskFormatter so normal? Gibt es eine schönere Lösung?
In dem Beispiel soll das Namefeld auf maximal 40 beliebige Zeichen begrenzt werden. Die Überprüfung ob überhaupt etwas eingegeben wurde erfolgt seperat in einem Listener (tut auch nix zur Sache).
Java:
JTextField nameTextField = new JFormattedTextField(new MaskFormatter(getZeichenForMask(40)));
private String getZeichenForMask(int zeichenLaenge) {
StringBuffer zeichen = new StringBuffer();
for (int i = 1; i <= zeichenLaenge; i++) {
zeichen.append("*");
}
return zeichen.toString();
}
Anhänge
Zuletzt bearbeitet: