Язык интерфейса JSpinner
Вопрос
Я создаю JSpinner и настраиваю NumberEditor в произвольном формате.
Но независимо от того, что я делаю, формат использует ". " вместо ", " не в соответствии с моей локалью (pt_BR).
priceSpinner = new JSpinner();
priceSpinner.setEditor(new JSpinner.NumberEditor(priceSpinner, "0.00"));
Можно ли использовать ", " вместо "." в качестве десятичного разделителя?
Решение
Указывая шаблон нестандартного формата, вы говорите JRE игнорировать ваш языковой стандарт и использовать этот конкретный формат. Если вы просто после счетчика для чисел до двух десятичных знаков, используйте setModel () вместо setEditor (), который создаст для вас NumberEditor:
JSpinner priceSpinner = new JSpinner();
priceSpinner.setModel(new SpinnerNumberModel(0.00, 0.00, 100.00, 0.01));
Если вам абсолютно необходимо использовать собственный шаблон формата, вы можете настроить символы десятичного формата для этого шаблона после его создания:
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);
Не связан с StackOverflow