Estou com um problema para pegar os eventos de teclado qd eu pressiono mais de uma tecla ao mesmo tempo. Exemplo:
Tenho um menu que possui como atalho Ctrl + A, outro com Ctrl + S, e outro com F1
Consigo fazer funcionar apenas o F1.
Estou usando o seguinte código:
this.addKeyListener(this);
public void keyPressed(KeyEvent e){
if (e.getKeyCode() == KeyEvent.VK_F1){
new FrmSobre().setVisible(true);
}else{
if (e.getKeyCode() == KeyEvent.VK_A && e.isControlDown()){
EvtAbreArquivo();
}else{
if (e.getKeyCode() == KeyEvent.VK_S && e.isControlDown()){
EvtSalvar();
}
}
}
}
public void keyReleased(KeyEvent e){
// sem implementação
}
public void keyTyped(KeyEvent e){
// sem implementação
}
Vamos pela ordem:
fenrir:
vlw pela dica da convenção de códigos. foi besteira minha
SrFabio:
vlw pela dica, acabei usando o KeyStroke msm
Baldão:
descobri q ai tava funcionando e aqui naum…
Eu estava misturando duas maneiras para capturar as teclas: a que você testou e uma que usa KeyStroke. Qd eu removi uma delas, funcionou direito.
Pra quem quiser saber como eu fiz, foi soh adicionar o método setAccelerator em cada jMenuItem. Ficou assim: