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 ответ
Это работает для 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()));
}
}