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()));
    }
}
Другие вопросы по тегам