JSpinner Editor locale
Frage
Ich bin ein JSpinner Schaffung und Erhaltung einer NumberEditor mit einem benutzerdefinierten Format einstellen.
Aber egal, was ich tue das Format verwendet „“ statt "" nicht nach meinem locale (pt_BR).
priceSpinner = new JSpinner();
priceSpinner.setEditor(new JSpinner.NumberEditor(priceSpinner, "0.00"));
Ist es möglich, verwenden „“ anstelle von „“ als Dezimaltrennzeichen?
Lösung
Durch ein benutzerdefiniertes Format Muster spezifizieren Sie die JRE erzählen Ihren Standort zu ignorieren und dass bestimmtes Format verwenden. Wenn Sie einfach nach einem Spinner für Zahlen auf zwei Dezimalstellen sind, verwendet setModel () anstelle von setEditor (), die eine NumberEditor für Sie erstellen:
JSpinner priceSpinner = new JSpinner();
priceSpinner.setModel(new SpinnerNumberModel(0.00, 0.00, 100.00, 0.01));
Wenn Sie unbedingt Ihr eigenes Format Muster verwenden müssen, können Sie die Dezimalformat Symbole für dieses Muster einstellen, nachdem Sie es erstellt haben:
JSpinner priceSpinner = new JSpinner();
JSpinner.NumberEditor editor = new JSpinner.NumberEditor(priceSpinner, "0.00");
DecimalFormat format = editor.getFormat();
//better to use Locale.getDefault() here if your locale is already pt_BR
Locale myLocale = new Locale("pt", "BR");
format.setDecimalFormatSymbols(new DecimalFormatSymbols(myLocale));
priceSpinner.setEditor(editor);