JSpinner 数字编辑器
JSpinner Number editor
下面这段代码实际上做了什么,
//Make the year be formatted without a thousands separator.
spinner.setEditor(new JSpinner.NumberEditor(spinner, "#"));
为什么需要这样做来消除 JSpinner numberModel 中的逗号。
我是新手java,请简单说明。
JSpinner.NumberEditor
构造函数的第二个参数是十进制格式。您应该阅读 DecimalFormat's documentation 以真正理解它是如何工作的,但在这种情况下,它是最简单的格式 "#"
,仅表示 "all digits go here"。由于它不包含任何分隔符,因此它们不会出现在格式化文本中。如果你想要它们,你可以指定类似 "### ###"
的内容(意思是用空格分隔的三位数字组)。
阅读the official tutorial on formats也是一个好主意。 (感谢 Ilya Lapitan 的评论。)
JSpinner 使用的默认格式取决于语言环境设置,这些设置通常由您的 OS and/or Java 设置决定。要动态确定格式,您可以这样做
if (spinner.getEditor() instanceof JSpinner.NumberEditor) {
JSpinner.NumberEditor numberEditor = (JSpinner.NumberEditor) spinner.getEditor();
System.out.println(numberEditor.getFormat().toPattern());
}
在我的系统上(俄语 OS 语言环境,但美国英语 NetBeans)它打印 #,##0.###
,这意味着:
#,##0
——将数字分成三组,用逗号分隔各组并至少保留一位数字(用最后一个 0
表示而不是 #
);
.###
——四舍五入到小数点后三位(显示为.
)。
如果 instanceof
运算符的计算结果为 false
,这意味着您的微调器未设置为显示数字或安装了自定义编辑器。
下面这段代码实际上做了什么,
//Make the year be formatted without a thousands separator.
spinner.setEditor(new JSpinner.NumberEditor(spinner, "#"));
为什么需要这样做来消除 JSpinner numberModel 中的逗号。
我是新手java,请简单说明。
JSpinner.NumberEditor
构造函数的第二个参数是十进制格式。您应该阅读 DecimalFormat's documentation 以真正理解它是如何工作的,但在这种情况下,它是最简单的格式 "#"
,仅表示 "all digits go here"。由于它不包含任何分隔符,因此它们不会出现在格式化文本中。如果你想要它们,你可以指定类似 "### ###"
的内容(意思是用空格分隔的三位数字组)。
阅读the official tutorial on formats也是一个好主意。 (感谢 Ilya Lapitan 的评论。)
JSpinner 使用的默认格式取决于语言环境设置,这些设置通常由您的 OS and/or Java 设置决定。要动态确定格式,您可以这样做
if (spinner.getEditor() instanceof JSpinner.NumberEditor) {
JSpinner.NumberEditor numberEditor = (JSpinner.NumberEditor) spinner.getEditor();
System.out.println(numberEditor.getFormat().toPattern());
}
在我的系统上(俄语 OS 语言环境,但美国英语 NetBeans)它打印 #,##0.###
,这意味着:
#,##0
——将数字分成三组,用逗号分隔各组并至少保留一位数字(用最后一个0
表示而不是#
);.###
——四舍五入到小数点后三位(显示为.
)。
如果 instanceof
运算符的计算结果为 false
,这意味着您的微调器未设置为显示数字或安装了自定义编辑器。