Alguém sabe me dizer porque o setKeyCode não funcionada neste código?
if(e.getSource()==T3){if(e.getKeyCode()==10||e.getKeyCode()==9)// Enter ou TAB{e.setKeyCode(9);// gera TAB -- nao funcionareturn;}if(e.getKeyCode()==8)// verifica se a tecla pressionada e BackSpacereturn;// se for BackSpace cai foraif(e.getKeyCode()<96||e.getKeyCode()>105)// nao e teclado numerico{e.setKeyCode(e.VK_ESCAPE);// cancela a tecla pressionadareturn;}}
Este objeto “e” deve estar sendo obtido através de um KeyListener, certo? Bem cada vez que você preciona uma “Key” no seu “Keyboard” o valor do método getKeyCode vai ser diferente, dependendo da tecla que você precionar.
Se você mudar o código usando o método setKeyCode ele só vai valer até o final deste método, porque a próxima vez que você apertar alguma tecla o valor do seu método getKeyCode vai representar o código da tecla que você digitou.
Era está sua dúvida?
Abs
G
Goncalves_ePJ
Opa!
Sim, o “e.” é proveniente do KeyListener. Entranto não é essa a minha dúvida. A minha dúvida é que quando eu pressiono a tecla ENTER, no meu ver, setKeyCode deveria substituir o valor da tecla pressionada, no caso 10 (código do ENTER) pelo 9 (código da tecla TAB), e neste caso, executar a função de TAB. Mas isto não acontece. Quando eu teclo ENTER a função TAB não é acionada e o cursor permanece no campo.
Abs.
Eduardo
BrunoBastosPJ
Você não está em loop… Assim que você passa do seu primeiro OU onde você testa se é um Enter ou um TAB você não volta a testar nada com TAB…
Além disso você chama um return; o que finaliza seu método ali mesmo…
Se você quiser fazer isso vai ter que ter outra condição testando o seu TAB e retirar esse return;
G
Goncalves_ePJ
Ok! Eu sei que não está em loop, mas se vc analisar o código que vem logo abaixo, vc pode ver que se o usuário digita alguma tecla que não esta entre 96 e 105, ele seta no lugar da tecla digitada o e.VK_ESCAPE, que na verdade simula a tecla ESC e desta forma anula o que o usuário digitou, certo? O mesmo não deveria acontecer com o esquema do ENTER? Tipo usuário teclou ENTER, daí entra no IF e o programa seta no lugar do CODE ENTER o CODE TAB (que é 9). Minha dúvida, como ele faz isto com o ESC, ele não poderia estar trocando o que foi digitado, no caso ENTER por TAB, acontecendo assim, a troca de foco do campo como se o usuário tivesse teclado o TAB, ao invés do ENTER (feito normalmente pela tecla TAB)? Ou no caso do e.VK_ESCAPE, funciona diferente?
if(e.getKeyCode()<96||e.getKeyCode()>105)// nao e teclado numerico{e.setKeyCode(e.VK_ESCAPE);// cancela a tecla pressionadareturn;}