[Resolvido] - Evt.consome aceitando a tecla backSpace
4 respostas
Marcio_Tostes
Prezados, boa tarde.
Tenho um campo de texto em um JtextField, e um evento KeyTyped para verificar as teclas pressionadas, aceitando somente letras e outros caracteres por mim definidos, veja o código:
Meu problema é o seguinte, desta forma o código não aceita a tecla BackSpace caso o usuário queira utilizar, o que deve fazer para o procedimento aceitar a tecla?
Inclua o caractere \b nessa sua lista de caracteres válidos.
Marcio_Tostes
Olá, bom dia.
Ontem descobri uma coisa, só não aceita o BackSpace utilizando o LookAndFeel liquid e metal que tenho na minha aplicação. Acrescentei também o carácter \b na lista de caracteres e o BackSpace funcionou em outros Look’s, pode me responder o por que de \b habilitar o uso do botão?
staroski1 like
O caractere '\b' é o caractere do backspace, a lógica que você implementou faz o seguinte:
se o caractere digitado não estiver na lista de caracteres válidos, você consome o evento através do event.consume().
Um evento consumido não é tratado por outros listeners, inclusive os listeners internos do componente.
Então como o backspace não estava na lista de caracteres válidos, o evento era consumido e os listeners internos do componente ignoravam o pressionamento, então para o componente é como se não fosse pressionado nada.
StringcaracteresValidos="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ´^~´ãÃáÁéÉóÓúÚ";StringcaractereDigitado=""+event.getKeyChar();if(!caracteresValidos.contains(caractereDigitado)){
event.consume(); // se o caractere digitado não é válido, consome o evento
}