2

JFormattedTextField小数点以下3桁を超える2桁の数字を受け入れることができるはずのがあります。エントリ、、を受け入れます0.1が、0.01小数点以下の桁数が多い数値0.001は拒否します。0.0001

これが私のコードが今どのように機能するかです:

DecimalFormat decimalFormat = new DecimalFormat("0.0E0");
JFormattedTextField txtfield = new JFormattedTextField(decimalFormat.getNumberInstance(Locale.getDefault()));

テキストフィールドで小数点以下3桁を超える数値を受け入れるにはどうすればよいですか?

4

1 に答える 1

8

エントリ0.1、0.01、0.001を受け入れますが、0.0001および10進数を超える数値を拒否します。

これは、 NumberFormat / DecimalFormat(あなたの場合)setMinimumFractionDigits(int)setMaximumFractionDigits(int)および/またはでsetRoundingMode(RoundingMode.Xxx)設定可能である必要があります。

例えば

final JFormattedTextField textField1 = new JFormattedTextField(new Float(10.01));
    textField1.setFormatterFactory(new AbstractFormatterFactory() {

        @Override
        public AbstractFormatter getFormatter(JFormattedTextField tf) {
            NumberFormat format = DecimalFormat.getInstance();
            format.setMinimumFractionDigits(2);
            format.setMaximumFractionDigits(2);
            format.setRoundingMode(RoundingMode.HALF_UP);
            InternationalFormatter formatter = new InternationalFormatter(format);
            formatter.setAllowsInvalid(false);
            formatter.setMinimum(0.0);
            formatter.setMaximum(1000.00);
            return formatter;
        }
    });
}
于 2013-02-14T14:21:20.403 に答える