Ich habe ein JFormattedTextField mit einem NumberFormat mit Locale.US. Also das Dezimaltrennzeichen ist der Punkt und das Gruppierungstrennzeichen ist das Komma.
Jetzt gebe ich die Zeichenfolge "1,23" in dieses Textfeld ein und verschiebe den Fokus auf eine andere Komponente. Ich würde erwarten, dass die Zeichenkette verschwindet (wie wenn ich "a" anstelle von "1,23" schreibe), da es offensichtlich keine gültige Darstellung einer Zahl ist, wenn Sie Locale.US verwenden. Stattdessen wird der Text im Textfeld in "123" geändert.
Dies liegt daran, dass das verwendete NumberFormat beim Parsen nicht streng ist und das Komma einfach ignoriert.
Frage : Wie kann ich NumberFormat mitteilen, in diesem Fall eine ParseException auszulösen, damit das Textfeld nach dem Verschieben des Fokus auf eine andere Komponente leer ist?
Testcode:
%Vor%Verschieben Sie den Fokus vom Textfeld auf die Schaltfläche und der Text wird auf "123" geändert.
Ich würde vorschlagen, dass Sie Regex verwenden und die Match-Funktion wie folgt verwenden:
%Vor% Wenn Sie Integer.parseInt(String)
verwenden, wird auch eine Ausnahme ausgelöst, wenn sie analysiert wird, oder Sie können Double.parseDouble(value)
Tags und Links java swing number-formatting jformattedtextfield