For instance: if I fill in 3.14, the formatted text field replaces this to 3?
不太可能3
,但是3.1
。
因为当你调用构造函数 new 时JFormattedTextField(Object)
,它调用的setValue(object)
函数最终会尝试通过调用函数创建一个formatter factory
对应于 Type of的函数,其中默认的 for创建如下:object value
getDefaultFormatterFactory(Object type)
formatter
float
if (type instanceof Number) {
AbstractFormatter displayFormatter = new NumberFormatter();
((NumberFormatter)displayFormatter).setValueClass(type.getClass());
AbstractFormatter editFormatter = new NumberFormatter(
new DecimalFormat("#.#"));
((NumberFormatter)editFormatter).setValueClass(type.getClass());
return new DefaultFormatterFactory(displayFormatter,
displayFormatter,editFormatter);
}
从这段代码中,您应该已经注意到它创建了DecimalFormat
with mask "#.#"
。所以尝试在构造函数中添加DecimalFormat
with 掩码:"#.##"
JFormattedTextField
JFormattedTextField feild = new JFormattedTextField(new DecimalFormat("#.##"));
feild.setValue(new Float(3.34));
你应该很高兴。