0

我正在创建一个 JSpinner 并使用自定义格式设置一个 NumberEditor。

但无论我做什么,格式都使用“。” 而不是“,”,而不是根据我的语言环境(pt_BR)。

priceSpinner = new JSpinner();
priceSpinner.setEditor(new JSpinner.NumberEditor(priceSpinner, "0.00"));

是否可以使用“,”而不是“。” 作为小数分隔符?

4

1 回答 1

4

通过指定自定义格式模式,您告诉 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);
于 2009-06-24T09:35:43.620 回答