#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 .
- Сначала создайте свой собственный верификатор ввода
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; } } }
- Затем назначьте экземпляр этого класса вашему текстовому полю. (Фактически любой JComponent может быть проверен)
myTextField.setInputVerifier(новый MyInputVerifier()); Конечно, вы также можете использовать анонимный внутренний класс, но если валидатор будет использоваться и в других компонентах, лучше использовать обычный класс.
Также взгляните на документацию SDK: JComponent#setInputVerifier .