【发布时间】:2017-05-16 20:05:10
【问题描述】:
为了将用户的输入限制在特定的数字范围内,我创建了这个函数:
public static final Locale GR=new Locale("el", "GR");
public static NumberFormatter getMyNumberFormatter(){
NumberFormatter formatter = new NumberFormatter(NumberFormat.getInstance(GR));
formatter.setValueClass(Double.class);
formatter.setAllowsInvalid(false);
formatter.setCommitsOnValidEdit(true);
formatter.setMinimum(0.0);
formatter.setMaximum(10000000.0);
DecimalFormat df = (DecimalFormat)DecimalFormat.getInstance(GR);
df.setGroupingUsed(true);
formatter.setFormat(df);
return formatter;
}
我将此格式化程序应用于 JFormatedTextfield,但它仅适用于整数值。我希望用户能够键入从 0.0 到 10000000.0 的浮点数值,但当前的格式化程序只允许整数。自动分组工作完美。有什么建议吗?
【问题讨论】:
-
您是否需要输入 逗号 为decimal mark - 希腊语?
-
您是否尝试过 BigDecimal 而不是 Double 作为值类?
-
@JoopEggen 语言环境设置为希腊语 (new Locale("el", "GR")),所以逗号作为小数点应该不成问题。以防万一,我使用美国语言环境('.' 表示小数点)对其进行了测试,并遇到了同样的问题。
-
@dpr 当我将 setValueClass(Double.class) 更改为 setValueClass(BigDecimal.class) 时,格式化程序不允许输入任何字符(出于某种奇怪的原因)。如果我使用 Float.class,也会发生同样的事情。
-
对不起,那就像答案中的
new NumberFormatter(new DecimalFormat("0.0###"))。
标签: java decimalformat jformattedtextfield numberformatter