Witam,
mam być może dość banalne pytanie, ale im dłużej czytam wątki na ten temat wiem mniej i mniej. Chciałbym czytać z JTextField liczbę rzeczywistą przy ustawionym locale na pl_PL. W JTextField wpisuję wartość z przecinkiem (np. 1,2). Czytam tę wartość z powrotem do zmiennej dobule i jest ok. Jeżeli wpiszę w JTextField wartość z kropką, to przy Locale pl_PL dostaję po parsowaniu 0. Najwidoczniej parsowanie kończy się na "kropce". Ale czy nie powinienem dostać ParseFormatException w tym momencie? A jeżeli nie, to jak zrobić abym dostał wyjątek?
public class NMMNumberInputVerifier extends InputVerifier {
Locale locale;
public NMMNumberInputVerifier(Locale _loc) {
this.locale=_loc;
}
@Override
public boolean verify(JComponent input) {
JTextField tf = (JTextField) input;
NumberFormat nf;
boolean isNumeric = true;
try {
System.out.println("Locale: "+this.locale.toString());
Number nv = nf.getNumberInstance(this.locale).parse(tf.getText());
double d = nv.doubleValue();
System.out.println("Wartosć w polu: "+d);
} catch (NumberFormatException | ParseException e) {
isNumeric=false;
JOptionPane.showMessageDialog(null, "Enter numeric value.", "Bad input!", JOptionPane.ERROR_MESSAGE);
}
return isNumeric;
}
}