Проверка десятичного поля текстового поля Java - PullRequest
2 голосов
/ 26 октября 2011

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

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

Ответы [ 3 ]

5 голосов
/ 26 октября 2011

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

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

3 голосов
/ 26 октября 2011

Любая проверка в 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 (new MyInputVerifier ());Конечно, вы также можете использовать анонимный внутренний класс, но если валидатор должен использоваться и для других компонентов, лучше использовать нормальный класс.

Также посмотрите документацию SDK: JComponent # setInputVerifier.

3 голосов
/ 26 октября 2011
if(id.matches("\\d{5}\\.\\d{2}"))
    return true;
return false;
...