只是感兴趣的问题,有没有一种方法KeyListener
可以做同样的工作KeyBindings
,我的意思是覆盖keyListener 的方法并监听多个键(CTRL+ somekey)。
我知道,这有点愚蠢,但正如我所说,只是兴趣问题。
只是感兴趣的问题,有没有一种方法KeyListener
可以做同样的工作KeyBindings
,我的意思是覆盖keyListener 的方法并监听多个键(CTRL+ somekey)。
我知道,这有点愚蠢,但正如我所说,只是兴趣问题。
您可以通过使用标志来做到这一点:
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
from 的方法KeyEvent
:
if(e.isControlDown()) {
//CTRL is pressed
}
KeyEvent 包含 Alt、Shift 和 Control 键所需的信息:
if(e.getKeyCode() == KeyEvent.VK_A && e.isControlDown())
{
// do something
}
另一种选择是你可以这样Ctrl做A
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode() == KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_DOWN_MASK).getKeyCode())
//Code Here
}
}