1

我想更改 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());
}

但这不尊重关于逗号等的语言环境设置。

4

0 回答 0