我有一个 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.
这应该可以在 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/