其他分享
首页 > 其他分享> > 如何使JFormattedTextField接受不带小数点的整数(逗号)?

如何使JFormattedTextField接受不带小数点的整数(逗号)?

作者:互联网

我用这种方式使用了JFormattedTextField和NumberFormat:

– 提供JFormattedTextField引用

JFormattedTextField integerField;

– 创建一个NumberFormat引用

NumberFormat integerFieldFormatter;

– 在构造函数中:

integerFieldFormatter = NumberFormat.getIntegerInstance();
integerFieldFormatter.setMaximumFractionDigits(0);

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

……….

我打算只使用整数,但是当我键入1500之类的数字时,它会在失去焦点后转换为1,500,抛出异常这是它的第一行:

Exception in thread “AWT-EventQueue-0”
java.lang.NumberFormatException: For input string: “1,500”

当我使用JTextField而不是JFormattedTextField正常接受所有整数时,但我想使用JFormattedTextField的原因是受益于其输入限制优势.

解决方法:

我意识到这是一个古老的问题,但我在同一个问题上偶然发现了它.由于其他答案对我来说似乎是变通,我仔细研究了NumberFormat方法.

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

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

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

当然,您也无法将它们用于输入,但这不是问题所针对的,对吧?

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

标签:jformattedtextfield,java,integer,swing,number-formatting
来源: https://codeday.me/bug/20191008/1871434.html