java - 使 JFormattedTextField 接受多于 3 位的小数

标签 java swing jformattedtextfield

我有一个 JFormattedTextField,它应该能够接受超过 3 位小数的双数。它接受条目 0.10.010.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.

这应该可以在 NumberFormat 中设置/DecimalFormat (in your case)通过 setMinimumFractionDigits(int)setMaximumFractionDigits(int) 和/或使用 setRoundingMode(RoundingMode.Xxx),更多信息请参见 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;
        }
    });
}

关于java - 使 JFormattedTextField 接受多于 3 位的小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14876695/

相关文章:

java - Swing:为什么 JFormattedTextField 在焦点丢失时添加 ","

java - 为什么 SQLException 是已检查异常

java - 将堆栈跟踪打印到文件中

java - JAVA中的 double

java - 组件在添加时删除图像

java - 验证文本 Pane 的范围

java - SAP 混合动力系统 [Y] : How to create a custom interceptor

java - 如何创建可滚动的 JPopupMenu

java - 使用 ObjectOutputStream 和 ObjectInputStream 打开/保存 JTable 中的数据

java - 在 Java 中查找两个日期之间的差异