具有任意小数位数的 JFormattedTextfield
Posted
技术标签:
【中文标题】具有任意小数位数的 JFormattedTextfield【英文标题】:JFormattedTextfield with any number of fraction digits 【发布时间】:2016-01-22 05:45:51 【问题描述】:如何创建一个JFormattedTextField,它可以接受十进制数中任意数量的小数位?
JFormattedTextField tf = new JFormattedTextField();
tf
.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(
new javax.swing.text.NumberFormatter(new java.text.DecimalFormat())));
这仅接受 3 个小数位数,因为 DecimalFormat 的最大小数位数默认为 3。
【问题讨论】:
docs.oracle.com/javase/7/docs/api/java/text/… 这可能会有所帮助:***.com/questions/14876695/… 它要求设置最大小数位数。但就我而言,我不知道最大小数位数 【参考方案1】:这会将小数位数设置为最大值:
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
的Javadoc中指定:
具体的子类可能会对该值强制设置上限 适合被格式化的数字类型。
这在你的例子中并不重要,但是
对于除 BigInteger 和 BigDecimal 对象以外的格式化数字, 使用 newValue 和 340 中的较低值。负输入值是 替换为 0。
但我想这对于大多数情况来说应该足够了。
【讨论】:
以上是关于具有任意小数位数的 JFormattedTextfield的主要内容,如果未能解决你的问题,请参考以下文章