setKeyCode não funciona

4 respostas
G

Pessoal,

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 funciona
			return;
		}
		if (e.getKeyCode()==8) // verifica se a tecla pressionada e BackSpace
			return; // se for BackSpace cai fora
		if (e.getKeyCode() < 96 || e.getKeyCode() > 105) // nao e teclado numerico
		{
			e.setKeyCode(e.VK_ESCAPE); // cancela a tecla pressionada
			return;
		}
	}

Grato.
Eduardo Gonçalves

4 Respostas

BrunoBastosPJ

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. :wink:

Era está sua dúvida?

Abs

G

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

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 pressionada

return;

}
Criado 24 de abril de 2008
Ultima resposta 24 de abr. de 2008
Respostas 4
Participantes 2