Как с помощью графического редактора NetBeans создать поле JTextField или JFormattedText, которое необходимо проверять на соответствие регулярному выражению?
-
21-09-2019 - |
Вопрос
У меня есть регулярное выражение (\d{4}\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}
), что мне нужно проверить ввод текстового поля, когда пользователь нажимает кнопку «ОК» или перемещает курсор в другое поле.Это я умею делать, пишу код.Тем не менее, меня интересует, возможно ли, чтобы редактор графического интерфейса NetBeans выполнял за меня часть работы, тем более, что я отхожу от Eclipse к NetBeans в качестве предпочтительной IDE и хотел бы в полной мере воспользоваться преимуществами инструментов, которые он предоставляет.
Решение
Откройте свойства вашего JTextField, на вкладке «Свойства» найдите inputVerifier.Открой это
Теперь вас попросят ввести код InputVerifier.
ftf2.setInputVerifier(new InputVerifier() {
public boolean verifyText(String textToVerify) {
Pattern p = Pattern.compile("your regexp");
Matcher m = p.matcher(textToVerify);
if (m.matches()) {
setComponentValue(textToVerify);
return true;
}
else {
return false;
}
}
});
Я не компилировал этот код, поэтому он может содержать ошибки.Но думаю, вы поняли идею ;)
Другие советы
Это не самое простое решение, но очень мощное:пытаться Весенний богатый клиент, где проверка может быть достигнута через:
public class Validation extends DefaultRulesSource {
private Constraint NAME_VALIDATION = all(new Constraint[]{minLength(3), required()});
public void load() {
addRules(new Rules(Person.class) {
@Override
protected void initRules() {
add("name", NAME_VALIDATION);
}
});
...
и форма графического интерфейса легко создается с помощью:
TableFormBuilder formBuilder = getFormBuilder();
formBuilder.add("firstName");
formBuilder.add("name");
formBuilder.row();
Например.смотреть здесь для проверки или здесь для получения дополнительной информации.Я успешно использую это в своем проект с открытым исходным кодом ...
Таким образом, вы можете создать более общий компонент Swing, который можно будет добавить в палитра компонентов NetBeans