Escutar uma tecla e enviar outra

5 respostas
soaresinfo

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.

5 Respostas

dudaskank

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…

:slight_smile:

soaresinfo

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?!
:wink:

dudaskank

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 :slight_smile:

soaresinfo

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

dudaskank

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í :slight_smile:

Criado 10 de maio de 2004
Ultima resposta 20 de mai. de 2004
Respostas 5
Participantes 2