如何使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