JFormattedTextfield,包含任意数量的小数位数

时间:2016-01-22 05:45:51

标签: java

如何创建一个JFormattedTextField,它可以接受十进制数中的任意数量的小数位?

 JFormattedTextField tf = new JFormattedTextField();
      tf
      .setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
          new javax.swing.text.NumberFormatter(new java.text.DecimalFormat())));

这只接受3个小数位,因为DecimalFormat默认最大小数位数为3。

1 个答案:

答案 0 :(得分:0)

这会将小数位数设置为最大值:

JFormattedTextField tf = new JFormattedTextField();
DecimalFormat df = new java.text.DecimalFormat();
df.setMaximumFractionDigits(Integer.MAX_VALUE);
tf.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
    new javax.swing.text.NumberFormatter(df)));

请注意,这并不代表您问题中的“任何数字”。正如setMaximumFractionDigits的{​​{3}}中所述:

  

具体子类可以强制执行此值的上限   适合于格式化的数字类型。

这在您的示例中无关紧要,但

  

用于格式化BigInteger和BigDecimal对象以外的数字,   使用newValue和340的较低值。负输入值是   替换为0。

但我想这对大多数情况来说应该足够了。