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 valuegetDefaultFormatterFactory(Object type)formatterfloat
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);
}
从这段代码中,您应该已经注意到它创建了DecimalFormatwith mask "#.#"。所以尝试在构造函数中添加DecimalFormatwith 掩码:"#.##"JFormattedTextField
JFormattedTextField feild = new JFormattedTextField(new DecimalFormat("#.##"));
feild.setValue(new Float(3.34));
你应该很高兴。