这是我的代码:
// create the formatters, default, display, edit
NumberFormatter defaultFormatter = new NumberFormatter(new DecimalFormat("#.##"));
NumberFormatter displayFormatter = new NumberFormatter(new DecimalFormat("#.##€"));
NumberFormatter editFormatter = new NumberFormatter(new DecimalFormat("#.##"));
// set their value classes
defaultFormatter.setValueClass(Double.class);
displayFormatter.setValueClass(Double.class);
editFormatter.setValueClass(Double.class);
// create and set the DefaultFormatterFactory
DefaultFormatterFactory valueFactory = new DefaultFormatterFactory(defaultFormatter,displayFormatter,editFormatter);
jFormattedTextField4.setFormatterFactory(valueFactory);
jFormattedTextField1.setFormatterFactory(valueFactory);
当用户输入带点的值时会出现问题,例如(2.33),格式化文本字段更改为(2€)并且这不是假设,因为用户输入了有效值。 如果用户输入(2,33)结果是(2,33)并且再次没有假设,因为应该是(2.33)
基本上我总是想要格式(X.XX)。 例如:
输入与我想要的: 2-2.00€/ 2,22-2.22€/ 312.54-312.54€/ 432-432.00€/ 2,2-2.20€
编辑:一周前,这是有效的,在我将这个项目安装到另一个窗口后,问题出现了。这时我有一个葡萄牙语键盘。该问题可能涉及任何窗口或系统属性吗?
编辑:我仍在寻求帮助。任何人??? :■
答案 0 :(得分:1)
你必须使用getCurrencyInstance(),而不是普通的DecimalFormat,请确保你的描述中出现问题(" one week ago this was working, after i mount this project in another windows the issue appear....
")
和/或您可以定义受Locale
我不会使用CurrencyInstance
,对我来说不是很好,有可能强制使用真正的简写名称(例如Euro
= {{1 } {}使用EUR
和字符符号位置NavigationFilter
/ setDot
,code example by @camickr
这里有简单的标准,默认是您需要的,
moveDot