NumberFormat Parse nicht streng genug

8

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.

    
General Martok 11.06.2015, 13:56
quelle

2 Antworten

3

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)

verwenden     
Rahul Tripathi 11.06.2015 13:59
quelle
0

Tatsächlich ist Number nur eine super Klasse für Double , also könntest du Double.parseDouble(...) benutzen und dann sollte das automatische Unboxing den Rest erledigen.

    
Karrde 11.06.2015 14:03
quelle