Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用KeyEvent_Java_Swing_Keylistener - Fatal编程技术网

Java 如何使用KeyEvent

Java 如何使用KeyEvent,java,swing,keylistener,Java,Swing,Keylistener,我正在编写一个小的图形编辑器,当我按下Ctrl+A时,我想要捕捉事件 我使用这样的代码(这是测试版本): 但我不知道如何捕捉Ctrl+a 我尝试过这样的事情 case KeyEvent.VK_CONTROL+KeyEvent.VK_A : System.out.println("A+CTRL"); break; 但是这个代码KeyEvent.VK_CONTROL+KeyEvent.VK_A返回int,可能另一个组合键返回相同的数字 有人能帮我试试这个吗

我正在编写一个小的图形编辑器,当我按下Ctrl+A时,我想要捕捉事件

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

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

我尝试过这样的事情

    case KeyEvent.VK_CONTROL+KeyEvent.VK_A :
        System.out.println("A+CTRL");
        break;
但是这个代码
KeyEvent.VK_CONTROL+KeyEvent.VK_A
返回int,可能另一个组合键返回相同的数字

有人能帮我试试这个吗

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) {
        }
    });

KeyEvent
上尝试
isControlDown
方法:

您可以使用
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;
        ...
}

我强烈支持@trashgood的推荐。这里不是键侦听器的位置,而是键绑定的位置。有关详细信息,请参阅。
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;
        ...
}