是否可以将 JFormatterTextField 的 MaskFormatter 设置为 ##,## 并将 JFormatterTextField 的值类型设置为 Float?我尝试使用默认格式化程序工厂的以下掩码,但它不起作用,并且 getValue().getClass()
给了我 java.lang.String
。
DefaultFormatterFactory dff = new DefaultFormatterFactory();
mf = new MaskFormatter("##,##);
mf.setValueClass(Float.TYPE);
dff.setDefaultFormatter(mf);
field.setFormatterFactory(dff);
数字格式的问题是它没有为我屏蔽该字段。
PS。我的默认系统配置使用“,”作为“.”在英语中。所以这不是问题,我带它只是为了精确。最佳答案
您在这里遇到了 JFormattedTextField 的一些限制。
如果使用 DecimalFormat http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html您可以将显示设置为您喜欢的外观,但它不会严格强制用户输入的内容。返回的结果将是一个数字。
如果您使用 MaskFormatter,那么您会得到严格的强制执行,但返回的值是一个字符串。
当您需要结果时,您可以使用 MaskFormatter 并将其简单地传递给 Float.valueOf(str) 。另一种方法是实现您自己的格式对象或监听文本字段和/或其支持文档提供的某些事件,并直接对用户输入进行自己的控制。
关于java - JFormattedTextField 值设置为 Float,掩码设置为 ##,##,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20425959/