编程语言
首页 > 编程语言> > java-使JFormattedTextField接受三位数以上的十进制

java-使JFormattedTextField接受三位数以上的十进制

作者:互联网

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

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

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

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

解决方法:

It accepts entries 0.1, 0.01, 0.001 but rejects 0.0001 and numbers
with more decimal digits.

应该可以通过setMinimumFractionDigits(int),setMaximumFractionDigits(int)和/或setRoundingMode(RoundingMode.Xxx)在NumberFormat/DecimalFormat (in your case)中对其进行设置,更多内容请参见Oracle tutorial about Formatting

例如

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

标签:jformattedtextfield,java,swing
来源: https://codeday.me/bug/20191011/1890404.html