下面这段代码的实际作用是什么,

 //Make the year be formatted without a thousands separator.
        spinner.setEditor(new JSpinner.NumberEditor(spinner, "#"));


为什么要消除JSpinner numberModel中的逗号,需要这样做。

我是java的新手,请简单说明。

最佳答案

JSpinner.NumberEditor构造函数的第二个参数是十进制格式。您应该阅读DecimalFormat's documentation才能真正理解它的工作原理,但是在这种情况下,这是最简单的格式"#",仅表示“所有数字都在这里”。由于它不包含任何分隔符,因此它们不会出现在格式化的文本中。如果需要它们,可以指定"### ###"之类的东西(表示由空格分隔的三位数组成的组)。

the official tutorial on formats也是一个好主意。 (感谢Ilya Lapitan的评论。)

JSpinner使用的默认格式取决于语言环境设置,通常由您的OS和/或Java设置确定。要动态确定格式,您可以执行以下操作

if (spinner.getEditor() instanceof JSpinner.NumberEditor) {
    JSpinner.NumberEditor numberEditor = (JSpinner.NumberEditor) spinner.getEditor();
    System.out.println(numberEditor.getFormat().toPattern());
}


在我的系统(俄语操作系统语言环境,但使用美国英语NetBeans)上,它显示#,##0.###,表示:


#,##0-将数字按三组,用逗号分隔,并在其中至少保留一位数字(由最后一个0代替#表示);
.###-四舍五入到小数点后的三位数(显示为.)。


如果instanceof运算符求值为false,则表明您的微调器未设置为显示数字,或者未安装自定义编辑器。

07-25 21:22
查看更多