Voici mon code:Comment puis-je détecter CTRL + MAJ + ANY_KEY en utilisant un KeyAdapter?
tabbedPane.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
CheckShortcut controlShortcut = (key) -> {
return (evt.getKeyCode() == key) && ((evt.getModifiers() & KeyEvent.CTRL_MASK) != 0);
};
CheckShortcut controlShiftShortcut = (key) -> {
return (evt.getKeyCode() == key) && ((evt.getModifiers() & KeyEvent.CTRL_MASK & KeyEvent.SHIFT_MASK) != 0);
}; // Does not work <<<<<
if (controlShortcut.f(KeyEvent.VK_N)) {
createNewFile();
} else if (controlShortcut.f(KeyEvent.VK_O)) {
openFile();
} else if (controlShortcut.f(KeyEvent.VK_S)) {
save();
} else if (controlShiftShortcut.f(KeyEvent.VK_S)) {
saveAs();
} else if (controlShortcut.f(KeyEvent.VK_Q)) {
System.exit(0);
} else if (controlShortcut.f(KeyEvent.VK_W)) {
MainFrame.toggleFrame(qrWebcamFrame);
} else if (controlShortcut.f(KeyEvent.VK_C)) {
MainFrame.toggleFrame(comandaCreationFrame);
} else if (controlShortcut.f(KeyEvent.VK_P)) {
if (accessPasswordFrame("Senha de administrador",
"Login: ", "Senha de administrador inválida.",
ADMIN_TYPE)) {
MainFrame.toggleFrame(passwordFrame);
}
}
}
});
Les controlShortcut
fonctionne parfaitement. Néanmoins, lorsque j'ajoute KeyEvent.SHIFT_MASK
au test, cela ne fonctionne pas. Aussi, quand je fais ceci:
CheckShortcut controlShiftShortcut = (key) -> {
return (evt.getKeyCode() == key) && ((evt.getModifiers() & KeyEvent.CTRL_MASK) != 0) && ((evt.getModifiers() & KeyEvent.SHIFT_MASK) != 0);
};
Cela ne fonctionne pas aussi bien. Je ne comprends pas pourquoi, puisque j'ajoute juste le même test.
Vous devriez utiliser [Key Bindings] (http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html) pour quelque chose comme ceci. – camickr