Evento do Teclado

6 respostas
D

olá pessoal belezinha!!!
olha eu queria saber como eu faço pra capturar o evento do teclado…
por exemplo, deixar uma Thread rodando aguardando que seja precionada a tecla F1 por exemplo… como eu faço isso???

Obrigado!!!

6 Respostas

ViniGodoy

Apenas a AWT (e, consequentemente o Swing) tem suporte aos eventos de teclado.

Você pode registrar um key listener num form, ou trabalhar com os [http://www.guj.com.br/posts/list/47289.java#258583]KeyMaps[/url] de um componente, ou ainda se beneficiar da classe KeyStroke.

Seja qual for a alternativa, ela serve apenas para o modo gráfico.

D

então kra eu to usando Swing to fazendo um lancamento de produtos certo e quando o usuário precionar devidas teclas eu direciono ele pra outra interface saca… e pra isso eu preciso capturar o que ele digitou entende…

como eu o faria???

ViniGodoy

Use a dica do keymap e action map, dada acima. Registre para seu painel principal as ações das teclas que você deseja (provavelmente F1, F2 ou qualquer coisa assim, não?)

No exemplo abaixo, registro para a tecla F1 a ação abrir cadastro. A ação é estaria programada numa classe chamada AbrirCadastroAction, filha de AbstractAction.

Esse código é colocado ao final do construtor de seu formulário, após já ter construído pelo menos o painel principal.

InputMap imap = seuPainel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
imap.put(KeyStroke.getKeyStroke("F1"), "panel.buttonF1press"); 
 
 //Mapeamos o botão F1 a ação descrita pela string.
 ActionMap amap = seuPainel.getActionMap();
 
 //Mapeia a string para a ação a ser executada.
 amap.put("panel.buttonF1press", new AbrirCadastroAction());
D

olha só eu coloquei esse código q vc me passou aqui mais só que ele da erro na ultima linha

amap.put("panel.buttonF1press", new AbrirCadastroAction());

não entendi o que eu tenho que fazer, como seria essa classe AbrirCadastroAction()??

D

ouw desculpa eu saquei agora o que tinha q fazer… deu certinho muito obrigado

vlw mesmo cara!!!

D

ViniGodoy

desculpa eu voltar aqui mais é o seguinte, esse código q vc passou pra mim funciona certinho mais pra cada evendo que eu precisar tratar eu vou ter que cirar uma classe filha de AbstractAction, ta isso ainda não é problema , mais é o seguinte eu preciso por exemplo quando for precionada a tecla F10 atualizar a os dados da minha JTable que esta na mesma classe onde eu coloquei o código q vc passou , então não da certo saca…

será q não tem outro jeito de eu capturar o evento do teclado sem que eu precise criar uma classe filha de AbstractAction, e que o evento seje tratado na própria classe???

Criado 11 de abril de 2007
Ultima resposta 13 de abr. de 2007
Respostas 6
Participantes 2