我有一个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);
我该如何解决这个问题?
我希望在字段内进行此编辑,而我正在编写数字,就像分组字符出现时一样!
答案 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()));
}
}