【问题标题】:How to use KeyEvent如何使用按键事件
【发布时间】:2012-11-13 04:26:16
【问题描述】:

我正在编写小型图形编辑器,我想在按下 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 并且可能另一个组合键返回相同的数字

有人可以帮助我吗

【问题讨论】:

标签: java swing keylistener


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    试试这个.....

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

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 2013-07-02
        • 2019-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-03
        相关资源
        最近更新 更多