Gostaria de saber se tem como quando um usuário apertar a tecla <ENTER>, o meu programa enviar a tecla <TAB> para o KeyListener, eu dei uma olhada na classe Robot, parece que ele consegue mas gostaria de uma opinião de vocês e um pedaço do código para iluminar o problema.
Obrigado.
Escutar uma tecla e enviar outra
5 Respostas
Olá
O código em si eu não tenho, mas você deve criar uma classe que implemente a interface KeyListener (se não me engano), verificar a tecla que veio no evento (keyTyped acho eu) e se for enter, trocar o foco da aplicação pro próximo componente. Pra trocar o foco, acho que também tem um método que passa pro próximo…
Daí é só colocar isso com o addKeyListener() em todos os componentes que você quiser esta forma de gir com o enter.
Falou, e espero ter ajudado…

Não é necessariamente para trocar o foco de componente que eu preciso. Preciso mesmo é de substituição de teclas pressionadas, por exemplo: não quero que o usuário consiga abrir o menu iniciar pela tecla windows (o KeyListener detecta a tecla como desconhecida mas consegue capturar o evento de tecla pressionada). Se o usuário pressionar a tecla meu programa detecta o evento e coloca uma outra tecla no buffer (o menu iniciar só abre depois que a tecla é liberada). Eu preciso saber se tem como colocar a tecla no buffer! OK?!

Eita, o que o sono não faz não? Eu li uma coisa e respondi outra… foi mal :-p
Bom, acho que é bem simples, é só usar os métodos setKeyChar e setKeyCode para mudar a tecla do evento atual.
Mas isso só seria certeza de funcionar se esse método fosse o primeiro a ser chamado da lista dos KeyListeners, pois caso isso não ocorra os outros KeyListeners já terão processado a tecla verdadeira.
Nunca tentei fazer isso, mas deve funcionar… aliás, o que é essa classe Robot?
Falou 
Eu procurei os métodos setKeyChar e setKeyCode, mas não encontrei eles em lugar algum, em que classes eles estão?
E de que outros keyListeners você tá falando? Quero uma solução supondo que não tem ninguém fazendo esse tipo de tratamento para as teclas. Quem tiver alguma sugestão, posta ai…
P.S.: A classe Robot é simplesmente um VNC, você envia eventos do mouse e teclado, recebe imagem de uma tela… essas coisas, está disponível desde JVM 1.3
Falou
Estes métodos estão na classe KeyEvent, que sua classe recebe nos métodos que implementam a interface KeyListener.
A, agora vi o que é essa classe Robot, valeu…
Mas não tenho certeza se vai funcionar, pois você precisa mudar a tecla que vai pro buffer do SO… talvez você tenha que usar JNI e a api do windows pra esse caso que você exemplificou, mas não tenho certeza…
Falou e boa sorte aí 