我以这种方式将 JFormattedTextFieldNumberFormat 一起使用:

- 创建一个 JFormattedTextField 引用

JFormattedTextField integerField;

- 创建一个 NumberFormat 引用
NumberFormat integerFieldFormatter;

- 在构造函数中:
integerFieldFormatter = NumberFormat.getIntegerInstance();
integerFieldFormatter.setMaximumFractionDigits(0);

integerField = new JFormattedTextField(integerFieldFormatter );
integerField.setColumns(5);

.....

我打算只将它与整数一起使用,但是当我输入像 1500 这样的数字时,它会在失去焦点后转换为 1,500 ,并且抛出异常,这是它的第一行:



当我使用 JTextField 而不是 JFormattedTextField 时,所有整数都被正常接受,但我之所以要使用 JFormattedTextField 是为了受益于它的输入限制优势。

最佳答案

我意识到这是一个老问题,但我只是通过同一个问题偶然发现了它。由于其他答案对我来说似乎是解决方法,因此我仔细研究了 NumberFormat 方法。

我发现最简单的方法实际上是简单地在 NumberFormat 实例上停用 分组:

NumberFormat integerFieldFormatter = NumberFormat.getIntegerInstance();
integerFieldFormatter.setGroupingUsed(false);

这样文本字段输出中就不会出现组分隔符。

当然,您也无法将它们用于您的输入,但这不是问题的意图,对吗?

同样对于 NumberFormat 的整数实例,您不需要显式 setMaximumFractionDigits(0),因为这是 getIntegerInstance() 为您所做的一部分。

关于java - 如何让 JFormattedTextField 接受没有小数点(逗号)的整数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14467858/

10-10 16:23