如何使用KeyEvent

时间:2012-11-25 15:03:48

标签: java swing keylistener

我正在编写小型图形编辑器,当我按下Ctrl + A

时我想要捕获事件

我使用这样的代码(这是测试版):

@Override
public void keyPressed(KeyEvent e) {
    System.out.println("Press");
    switch (e.getKeyCode()){
        case KeyEvent.VK_A :
            System.out.println("A");
            break;
    }
}

但我不知道如何捕捉Ctrl + a

我尝试了类似的东西

    case KeyEvent.VK_CONTROL+KeyEvent.VK_A :
        System.out.println("A+CTRL");
        break;

但是此代码KeyEvent.VK_CONTROL+KeyEvent.VK_A返回int,并且可能另一个键组合返回相同的数字

有人可以帮助我

3 个答案:

答案 0 :(得分:4)

您可以使用isControlDown()方法:

switch (e.getKeyCode())
{
        case KeyEvent.VK_A :
            if(e.isControlDown())
               System.out.println("A and Ctrl are pressed.");
            else
                System.out.println("Only A is pressed");
            break;
        ...
}

答案 1 :(得分:3)

试试这个......

f.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
        }

        @Override
        public void keyPressed(KeyEvent e) {
            if ((e.getKeyCode() == KeyEvent.VK_A) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
                System.out.println("woot!");
            }
        }

        @Override
        public void keyReleased(KeyEvent e) {
        }
    });

答案 2 :(得分:3)