下面这段代码的实际作用是什么,
//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
,则表明您的微调器未设置为显示数字,或者未安装自定义编辑器。