Usando o editor da GUI da NetBeans, como posso criar um campo JTextField ou JformattedText que deve ser validado em relação a uma expressão regular?
-
21-09-2019 - |
Pergunta
Eu tenho uma expressão regular (\d{4}\w{3}(0[1-9]|[12][0-9]|3[01])([01][0-9]|2[0-3])([0-5][0-9]){2}
) que preciso validar a entrada de um campo de texto contra quando o usuário clica no botão OK ou move o cursor para outro campo. Que eu sei fazer, escrevendo o código. No entanto, estou interessado se for possível que o editor da GUI da NetBeans faça parte do trabalho para mim, especialmente porque estou me afastando do eclipse e em direção a Netbeans como meu IDE de escolha, e gostaria de aproveitar ao máximo das ferramentas que ele fornece.
Solução
Abra as propriedades do seu JTextfield, na guia Propriedades Procure o InputVerriFier. Abra
Agora você será solicitado a introduzir o código do InputVerriFier.
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;
}
}
});
Eu não compilei esse código, então pode conter erros. Mas acho que você entendeu;)
Outras dicas
Esta não é a solução mais fácil, mas é muito poderosa: tente cliente rico da primavera, onde a validação pode ser alcançada via:
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);
}
});
...
e o formulário da GUI é facilmente criado via:
TableFormBuilder formBuilder = getFormBuilder();
formBuilder.add("firstName");
formBuilder.add("name");
formBuilder.row();
Por exemplo, olho aqui para validação ou Aqui para mais informações. Estou usando isso com sucesso no meu Projeto de código aberto ...
Dessa forma, você pode criar um componente de swing mais geral que poderia ser adicionado ao Paleta de componentes NetBeans