如何创建一个JFormattedTextField,它可以接受十进制数中的任意数量的小数位?
JFormattedTextField tf = new JFormattedTextField();
tf
.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
new javax.swing.text.NumberFormatter(new java.text.DecimalFormat())));
这只接受3个小数位,因为DecimalFormat默认最大小数位数为3。
答案 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。
但我想这对大多数情况来说应该足够了。