我想更改 JSpinner 的默认十进制格式,指定小数位数,但保留其他格式设置区域设置。
但如果我这样做
@Test public void fails() {
JSpinner spinner = new JSpinner();
NumberEditor editor = new JSpinner.NumberEditor(spinner);
editor.getFormat().setMinimumFractionDigits(3);
spinner.setEditor(editor);
assertEquals(0, spinner.getValue());
assertEquals("0.000", ((NumberEditor) spinner.getEditor()).getTextField().getText());
// FAIL HERE with "0"
spinner.setValue(0.01);
assertEquals("0.010", ((NumberEditor) spinner.getEditor()).getTextField().getText());
}
正如我在 Sun 示例代码中发现的那样,初始格式化值为“0”,因为尚未检测到格式的更改。
我可以明确设置格式图片
@Test public void delMe() {
JSpinner spinner = new JSpinner();
spinner.setEditor(new JSpinner.NumberEditor(spinner, "0.000"));
assertEquals(0, spinner.getValue());
assertEquals("0.000", ((NumberEditor) spinner.getEditor()).getTextField().getText());
}
但这不尊重关于逗号等的语言环境设置。