boa tarde galera, estou com um problema na execução de ações por meio de teclas de atalho. Estou criando um sistema de vendas e desejo executar algumas ações por meio de teclas de atalho. Só que essas ações não são executadas quando insiro componentes no formulário, apenas quando o formulário está limpo, quando não tem componentes, que esses comandos funcionam. Alguém sabe a solução pra esse problema?
Posta o código que você fez, assim fica mais fácil da galera ver e te ajudar.
private void formKeyPressed(java.awt.event.KeyEvent evt) {
int tecla = evt.getKeyCode();
if (tecla == 112) {
JOptionPane.showMessageDialog(rootPane, "F1");
} else if (tecla == 113) {
JOptionPane.showMessageDialog(rootPane, "F2");
} else {
JOptionPane.showMessageDialog(rootPane, "Outra tecla");
}
}
Cara, nunca utilizei essa forma que você está fazendo, vou te dar um exemplo da forma que eu geralmente utilizo.
Eu crio um método onde eu implemento todas as teclas de atalho que meu form deve obedecer.
private void initTeclasDeAtalho() {
rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), "F1");
rootPane.getRootPane().getActionMap().put("F1", new AbstractAction("F1") {
@Override
public void actionPerformed(ActionEvent e) {
//Código a ser executado ao pressionar o F1
}
});
}
Com o método criado, basta fazer a chamada do mesmo no construtor da sua classe, que ao realizar a instância da classe ela já da o start das teclas de atalho.
Jonathan_Medeiros, valeu pela dica, resolveu meu problema. Muito obrigado.
Finalize o tópico marcando como solução a resposta que te ajudou a resolver o problema, igual na imagem abaixo!