JFormattedTextField.getValue返回的不是格式化的值

时间:2017-03-03 19:33:09

标签: java swing floating-point jformattedtextfield

我希望JFormattedTextField只接受数字,这是一个最多2位数的双数字。我阅读了Oracle页面上JFormattedTextField教程中的信息,该信息引导我找到下面提供的解决方案。

但是字段不按预期工作。显示它很好,它将始终在第二个小数位后切,但是当我调用:((Number)field.getValue).doubleValue()时,如果用户输入它,它将返回超过2个小数位。 (示例:如果您将1,333放入字段,则会显示1,33,但值为1,333

以下是代码:

private void setFormatters() {
    NumberFormat numberFormat = NumberFormat.getNumberInstance();
    numberFormat.setMinimumFractionDigits(2);
    numberFormat.setMaximumFractionDigits(2);

    NumberFormatter numberFormatter = new NumberFormatter(numberFormat);
    numberFormatter.setValueClass(Double.class);
    numberFormatter.setAllowsInvalid(false);

    sizeTF.setFormatterFactory(new DefaultFormatterFactory(
            numberFormatter
    ));

    depthTF.setFormatterFactory(new DefaultFormatterFactory(
            numberFormatter
    ));
}

字段在此处声明:

private JFormattedTextField sizeTF = new JFormattedTextField();
private JFormattedTextField depthTF = new JFormattedTextField();

我很高兴如果你能为我解决我的问题并解释上述代码为何会反映这种行为。

0 个答案:

没有答案