将NumberFomatterFactory设置为JFormattedTextField的正确方法是什么?

时间:2016-06-14 07:45:49

标签: java swing numberformatexception jformattedtextfield

我使用以下代码将NumberFomatterFactory设置为JFormattedTextField:

    try{
    JFormattedTextField ccyTxt = new JFormattedTextField();
    DecimalFormat ccyTxtFormat = (DecimalFormat) DecimalFormat.getNumberInstance();
    ccyTxtFormat.setMaximumIntegerDigits((int) 13);
    ccyTxtFormat.setMaximumFractionDigits((int) 5);
    ccyTxtFormat.setMinimumIntegerDigits(0);
    ccyTxtFormat.setMinimumFractionDigits(0);
    NumberFormatter ccyTxtFormatter = new NumberFormatter(ccyTxtFormat);
    ccyTxtFormatter.setAllowsInvalid(true);
    DefaultFormatterFactory ccyTxtDecimalFormatterFactory = new DefaultFormatterFactory(ccyTxtFormatter);
    ccyTxt.setFormatterFactory(ccyTxtDecimalFormatterFactory);
    } catch(Exception ex) {
    ex.printStackTrace();
    }

但是,如下例外:

java.lang.IllegalArgumentException: Cannot format given Object as a Number
        at java.text.DecimalFormat.format(DecimalFormat.java:487)
        at java.text.Format.format(Format.java:140)

将NumberFomatterFactory设置为JFormattedTextField的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

我无法重现您举报的例外情况;目前尚不清楚为什么你会抓住<div class="input-group custom-search-form"> <input type="text" class="form-control" placeholder="Testing" ng-model="searchBooking" ng-change="printValue()"> <span class="input-group-btn"> <button class="btn btn-default" type="button"> <i class="fa fa-search"></i> </button> </span> </div> 。下面的完整示例可以帮助您孤立地研究问题。特别是,

  • 添加第二个组件可以让您看到焦点变化的效果。

  • 使用Exception指定初始尺寸。

image

setColumns()