jformattedtextfield四舍五入的数字

时间:2014-01-14 21:58:49

标签: java swing jformattedtextfield

我有一个JFormattedTextField,我希望当我尝试输入一个数字,例如1002时,我将四舍五入到最接近的5的倍数

1002-> 1000

304-> 305

6-→5

9-→10

1→0

等。

我已经设置了一种数字格式来取消分组,只接受数字

NumberFormat format=NumberFormat.getInstance();
format.setGroupingUsed(false);
pun1[i]=new JFormattedTextField(format); //pun1 and pun2 are the arrays of FIELDS
pun2[i]=new JFormattedTextField(format);

我该如何解决这个问题?

我希望在字段内进行此编辑,而我正在编写数字,就像分组字符出现时一样!

1 个答案:

答案 0 :(得分:0)

这适用于int个参数:

public int roundToClosestFive(int num) {
    return (int) (Math.round(num / 5.0) * 5);
}

请记住,要获取您输入的字符串的int值,您可以执行:Integer.valueOf(string);并将其作为参数传递给方法。要让焦点更改或输入JFormattedTextField更改内的文字,您可以从propertyChange()侦听器的PropertyChange方法调用上述方法,您可以将其添加到JTextFormattedTextField }。 propertyChange()方法中的类似内容:

public void propertyChange(PropertyChangeEvent e) {
    Object source = e.getSource();
    if (source == pun1[i]) {
        ((JFormattedTextField) source).setText(""
                + roundToClosestFive(((Number)pun1[i].getValue()).intValue()));
    }
}