仅仅是感兴趣的问题,KeyListener
是否可以执行与KeyBindings
相同的工作,我的意思是重写 keyListener的方法并听取多个键( CTRL + somekey )。
我知道,这有点愚蠢的想法,但正如我所说,只是一个有趣的问题。
答案 0 :(得分:3)
您可以使用标志:
KeyListener kl = new KeyListener() {
boolean controlPressed = false;
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
controlPressed = true;
return;
}
if(controlPressed) {
// CTRL is pressed, you can check here for other keys:
if(e.getKeyCode() == KeyEvent.VK_A) {
//CTRL + A was pressed
}
}
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CONTROL) {
controlPressed = false;
}
}
};
正如camickr在评论中指出的那样,另一种方法是使用isControlDown
中的KeyEvent
方法:
if(e.isControlDown()) {
//CTRL is pressed
}
答案 1 :(得分:3)
KeyEvent包含Alt,Shift和Control键所需的信息:
if(e.getKeyCode() == KeyEvent.VK_A && e.isControlDown())
{
// do something
}
答案 2 :(得分:2)
另一种方法是你可以这样做 Ctrl 然后 A
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK).getKeyCode())
//Code Here
}
}