Проверка десятичного текстового поля Java

#java #swing #format #double #decimal

#java #swing #формат #двойной #десятичное

Вопрос:

Как я могу проверить, что пользовательский ввод содержит только 5 цифр с 2 десятичными знаками. Я использую приведенный ниже код для проверки 5 цифр, но как проверить 2 десятичных знака.

 if (!id.equals("")) {
        try {
            Integer.parseInt(id);
            if (id.length() <= 5) {
                return true;
            }
        } catch (NumberFormatException nfe) {
            return false;
        }
    }
 

Комментарии:

1. Возможно, вас заинтересует JFormattedTextField .

Ответ №1:

Класс DecimalFormat значительно поможет вам в этом. Вы можете проверить, что пользовательский ввод может быть проанализирован в соответствии с определенным шаблоном.

Библиотека commons-validator преобразует это в удобный вызов метода.

Ответ №2:

 if(id.matches("\d{5}\.\d{2}"))
    return true;
return false;
 

Комментарии:

1. Ну, за исключением того, что он хочет «до 5», а не «ровно пять».

Ответ №3:

Любая проверка в Swing может быть выполнена с использованием InputVerifier .

  1. Сначала создайте свой собственный верификатор ввода
     public class MyInputVerifier extends InputVerifier {
        public boolean verify(JComponent input) {
            String text = ((JTextField) input).getText();
            try {
                BigDecimal value = new BigDecimal(text);
                return (value.scale() <= Math.abs(2)); 
            } catch (NumberFormatException e) {
                return false;
            }
        }
    }
     
  2. Затем назначьте экземпляр этого класса вашему текстовому полю. (Фактически любой JComponent может быть проверен)

myTextField.setInputVerifier(новый MyInputVerifier()); Конечно, вы также можете использовать анонимный внутренний класс, но если валидатор будет использоваться и в других компонентах, лучше использовать обычный класс.

Также взгляните на документацию SDK: JComponent#setInputVerifier .