java - 尝试按下 CTRL 键时按键代码无效

标签 java keyevent

我正在尝试按下 CTRL+O 键,但我收到 Invalid key codekeyPress方法。我不明白为什么,我们不能使用 keyPressed 方法来触发 CTRL 按下的键吗?

这是我的代码:

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;



public class MainTest extends JFrame{


    public static void main(String[] args) throws AWTException {

        Robot r= new Robot();
        r.keyPress(KeyEvent.CTRL_MASK);
        r.keyPress(KeyEvent.VK_O);
        MainTest mainF =new  MainTest();
        mainF.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void keyReleased(KeyEvent e) {
                // TODO Auto-generated method stub

            }

            @Override
            public void keyPressed(KeyEvent e) {
                // TODO Auto-generated method stub
                if ((e.getKeyCode() == KeyEvent.VK_O) && ((e.getModifiers() & KeyEvent.CTRL_MASK) != 0)) {
                    System.out.println("woot!");
                }
            }
        });

    }
}

最佳答案

只需在第一个keyPress中使用KeyEvent.VK_CONTROL而不是KeyEvent.CTRL_MASK,这实际上会击中Control 键。

r.keyPress(KeyEvent.VK_CONTROL);
r.keyPress(KeyEvent.VK_O);

关于java - 尝试按下 CTRL 键时按键代码无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44117174/

相关文章:

java - 使用 session 信息呈现 JSF 页面

java - 迁移到 Android Studio 2.2 后出现 DexIndexOverflowException

java - 为什么在下面的代码中,当我编译或运行它不止一次时,输出是不同的

java - 同时按下按键时未接收到按键事件

java - Java 中停止窗口按键输入延迟

accessibility - 使用 JAWS 获取关键事件

java - 不会为 @DirtiesContext 重新创建 AnnotationTransactionAspect

c# - 如何让我的程序检查安装是否已完成,然后检查 "come back to life"

java - KeyEvent 特殊键(如静音)

java - 按下一个键和被按下的键被读取之间的延迟