使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; } }); }