Estou desenvolvendo um pequeno aplicativo onde tenho que “não deixar” o usuário digitar acentos, pontos ou qualquer caractere diferente de letras ou numeros (´~^´.,) etc…
Existe alguma forma de se fazer isso no momento da digitação e não uma validação depois de sair do foco do campo texto?
Podes usar o MaskFormatter, e indicar quais os dígitos não permitidos (ou permitidos, em outra abordagem).
A
amostech
A ideia de criar o PlainDocument parece ser a mais eficaz… na hora de sobrescrever o metodo insertString voce seta quais caracteres voce quer deixar no campo. Tipo assim olha… para aceitar apenas numeros eu faço assim:
Coloque esse trecho no Evento KeyTyped do InputTextField
int k=evt.getKeyChar();
if((k>47 && k<58)){
}
else{
evt.setKeyChar((char)KeyEvent.VK_CLEAR);
}
o intervalo de maior que 47 e menor que 58 deixa digitar apenas numeros, e não letras
agora para o seu caso olhe na tabela ascii e use mais algumas condições para deixar do jeito que vc quer
G
geovanni
MaskFormatter Mask = new MaskFormatter("U");
Mask.setInvalidCharacters("Todos os caracteres que deseja bloquear");
JFormattedTextField textfield = new JFormattedTextField(Mask);
L
leandrovrb
Voce pode utilizar este evento KeyTyped:
Sendo (k > 58 && k < 126) libera para digitar letras
Sendo (k > 47 && k < 58 ) libera para digitar numeros
int k = evt.getKeyChar();
if((k > 58 && k < 126) ||(k > 47 && k < 58)) {
if(tfCep.getText().length() == 10){
evt.setKeyChar((char)KeyEvent.VK_CLEAR);
}
} else {
evt.setKeyChar((char)KeyEvent.VK_CLEAR);
}
}