NumberFormatterとを使用していますがJFormattedTextField、.getValue()はユーザーが見ているのと同じ値を返しません。
入力文字列は NumberFormats parse-method を使用して解析されていると思いますNumberFormat.getNumberInstance();。実際の Locale から Numberformat を取得します。だから私は簡単にそれを拡張して独自の解析メソッドを書くことができるとは思わない?
例では、ユーザーが を入力1234.487
すると: がgetValue()返されます
1234.487が、ユーザーは表示されます。1,234.49
を使用した別の例NumberFormat.getCurrencyInstance();。ユーザーが入力1234.487するgetValue()と返さ1234.487れますが、ユーザーが表示されます$1,234.49
代わりに、フォーマッターが丸めずに値をフォーマットできない場合に ParseException を生成する必要があります。ユーザー4.35b6が. 4.35_ 4.35_ _
これが私が試したコードです:
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
final JFormattedTextField ftf = new JFormattedTextField(nf);
ftf.setValue(new BigDecimal("1234.50"));
// Print the value from ftf
final JTextField txt = new JTextField(12);
txt.addFocusListener(new FocusAdapter() {
public void focusGained(FocusEvent e) {
txt.setText(ftf.getValue().toString());
}
});
ユーザーが見ているのと同じ値を取得する方法は?