Estou iniciando em Java e estou quebrando a cabeça para criar ações por teclas pressionadas no teclado (atalho), estou usandoWindow Builder do eclipse que tem a ação KeyPressed/keyReleased, através do código
btnNewButton.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_DELETE) {
System.out.println("Delete" Pressed");
}
}
});`
Funciona porém o botão deve estar focado, dando mais uma vasculhada testei o seguinte:
btnNewButton.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_DOWN_MASK), "evento");
btnNewButton.getActionMap().put("evento", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
System.out.println("test");
}
});
usando o código no meu programa principal o mesmo problema acontece, só funciona com o botão btnNewButton focado porém criando uma classe, Jframe e botões novos funciona.
Pelo que entendi pelo JComponent.WHEN_IN_FOCUSED_WINDOW deveria funcionar sem foco mas realmente ainda não funciona.
Alguém poderia me ajudar com isto por favor?