使JFormattedTextField接受超过3位数的小数

我有一个JFormattedTextField应该能够接受超过3位十进制数的双数字。 它接受条目0.001但拒绝0.0001和具有更多十进制数字的数字。

这就是我的代码现在的工作方式:

 DecimalFormat decimalFormat = new DecimalFormat("0.0E0"); JFormattedTextField txtfield = new JFormattedTextField(decimalFormat.getNumberInstance(Locale.getDefault())); 

如何让我的文本字段接受超过3位十进制数字的数字?

它接受条目0.1,0.01,0.001但拒绝0.0001和具有更多十进制数字的数字。

这应该可以通过setMinimumFractionDigits(int)setMaximumFractionDigits(int)和/或setRoundingMode(RoundingMode.Xxx)在NumberFormat / DecimalFormat(在你的例子中)中 设置 ,更多关于格式化的Oracle教程

例如

 final JFormattedTextField textField1 = new JFormattedTextField(new Float(10.01)); textField1.setFormatterFactory(new AbstractFormatterFactory() { @Override public AbstractFormatter getFormatter(JFormattedTextField tf) { NumberFormat format = DecimalFormat.getInstance(); format.setMinimumFractionDigits(2); format.setMaximumFractionDigits(2); format.setRoundingMode(RoundingMode.HALF_UP); InternationalFormatter formatter = new InternationalFormatter(format); formatter.setAllowsInvalid(false); formatter.setMinimum(0.0); formatter.setMaximum(1000.00); return formatter; } }); }