Validação em TextField

9 respostas
E

Seguinte pessoal
Eu tenho um textField e eu jah coloquei algumas validações nela, como somente aceitar numeros.
Agora preciso que somente aceite numeros entre 1 e 5.
Se alguem puder me ajudar.

Vlw!

9 Respostas

R

vc pode implementar a Validator , do faces;
depois no faces-config.xml, caso jsf 1.1, vc registra seu validator.

<validator>
    ...
    <validator-id>nomeDoValidator</validator-id>
    <validator-class>
        pacotes.nomeDaClasseDoValidator
    </validator-class>    
</validator>

depois é só vc chamar este validator, no input que quizer.

Eric_Yuzo

Para permitir apenas números você está implementando um Document? Se for fica uma idéia para permitir apenas números entre 1 e 5:

// Implementação do método insertString. public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { super.insertString(offs, str.replaceAll("[^1-5]", ""), a); // Apaga tudo que não seja um caractere entre 1 e 5. }

E

Não entendi muito bem, eu quero que ele só aceite os numeros 1, 2, 3, 4 e 5.
Se ele tentar digitar 6 ou 0 ou 9 ele não aceite.

Vlw

Eric_Yuzo

Como você fez para o text field aceitar apenas números?

E

Você coloca um codigo no Evento KeyTyped do seu TextField .
Só colocar esse codigo aqui:

char c = evt.getKeyChar();

              if(!Character.isDigit(c) ){
                 evt.consume();
                 JOptionPane.showMessageDialog(null,"Informe apenas Números!");                  
        }

Blzinha!
:lol:;)

Eric_Yuzo

Eu tinha falado em implementar essa validação no Document, porque assim você atua diretamente no modelo do text field.

Implementando KeyListener do jeito que está só vai validar se o usuário digitar letra por letra no teclado. Por exemplo, o texto “12345” é válido, pois contém apenas números, mas se o usuário copiar e colar com Ctrl + V, ele será invalidado, pois o evt.getKeyChar() vai retornar ‘V’. Outro problema, se o usuário copiar e colar com mouse, qualquer texto será inserido sem passar pela validação, pois nenhum evento de teclado será disparado.

Se quiser entender melhor como funciona o Document, indico este artigo: http://www.guj.com.br/article.show.logic?id=29

E

Então isto eu sei.
Porem o meu textField é um campo nota! que só aceita numeros e apenas 1 numero.
Se fosse um TextField diferente, tipo, numero de telefone ou algo parecido, eu teria pego outro código.
Mas Vlw.

Mas vou dar uma olhada no topico.
Vlw cara.

Eric_Yuzo
Então, se você quiser aceitar apenas números entre 1 e 5 com KeyListener, faça assim:
char c = evt.getKeyChar();

              if((c < '1') || (c > '5')){
                 evt.consume();
                 JOptionPane.showMessageDialog(null,"Informe apenas Números entre 1 e 5!");                  
        }
Mas os problemas citados anteriormente ainda vão persistir. Aconselho tentar implementar o Document e qualquer dúvida que surgir poste aqui.
E

Blz cara…
Vlw vou testar o Codigo.
Qualquer duvida eu posto mesmo.

Abraços

Criado 16 de novembro de 2010
Ultima resposta 19 de nov. de 2010
Respostas 9
Participantes 3