Configuración regional del editor JSpinner
Pregunta
Estoy creando un JSpinner y estableciendo un NumberEditor con un formato personalizado.
Pero no importa lo que haga, el formato usa ". " en lugar de ", " ;, no según mi localidad (pt_BR).
priceSpinner = new JSpinner();
priceSpinner.setEditor(new JSpinner.NumberEditor(priceSpinner, "0.00"));
¿Es posible usar ", " en lugar de ". " como separador decimal?
Solución
Al especificar un patrón de formato personalizado, le indica al JRE que ignore su configuración regional y use ese formato específico. Si simplemente está buscando una ruleta para números con dos decimales, use setModel () en lugar de setEditor (), que creará un NumberEditor para usted:
JSpinner priceSpinner = new JSpinner();
priceSpinner.setModel(new SpinnerNumberModel(0.00, 0.00, 100.00, 0.01));
Si absolutamente debe usar su propio patrón de formato, puede ajustar los símbolos de formato decimal para ese patrón después de haberlo creado:
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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow