2

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

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

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

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

4

1 回答 1

8

它接受条目 0.1、0.01、0.001,但拒绝 0.0001 和具有更多小数位数的数字。

这应该可以在 NumberFormat / DecimalFormat (在你的情况下)中setMinimumFractionDigits(int)通过和setMaximumFractionDigits(int)/或 设置setRoundingMode(RoundingMode.Xxx),更多关于格式化的 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;
        }
    });
}
于 2013-02-14T14:21:20.403 回答