1

JSpinner のデフォルトの 10 進数形式を変更して、小数点以下の桁数を指定しますが、他の形式のロケールは特定のままにします。

しかし、私がこれを行う場合

@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