Olá a todos,
Eu tenho um JDialog com alguns botões e gostaria que em qualquer momento que o usuario teclar um F1, F2, F3… ele acionasse um botão correspondente.
a unica maneira que encontrei foi adicionar keylistners nos outros componentes, mas como são muitos estou procurando outra alternativa.
Alguém tem alguma sugestão?
Até um tempo atrás era usado o método:
porém ele se tornou obsoleto e sugerem que você faça isso dessa forma:
component.getInputMap().put(aKeyStroke, aCommand);
component.getActionMap().put(aCommmand, anAction);
O KeyStroke é obtido através de:
sendo que o primeiro parâmetro é a tecla(obtido através da classe KeyEvent) que desejas utilizar como atalho e o segundo é o modificador(o modificador somente é usado se o atalho for tipo uma combinação: Ctrl, Alt ou Shift + F1, caso for usar só F1 basta colocar o modificador como 0)
o aCommand serve de identificador para mapear o botão com sua ação específica nos 2 HashMaps.
seu código ficaria +/- assim:
myButton.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), "F1");
myButton.getActionMap().put("F1", myButtonAction);
Qualquer dúvida, da uma lida na documentação dos métodos 
Valeu…
funcionou mas não deu exatamente para o que eu preciso, funcionou somente quando o foco está sobre o próprio botão que declarei o atalho, quando está em qualquer outro lugar ele não funciona.
preciso que quando o foco esteja em algum text field por exemplo ele acione o botão.
mesmo assim obrigado pela dica.
realmente, o padrão é com foco no componente…
esqueci de adicionar a condição no getInputMap :B
Valeu…