2

有没有与主题中的问题相对应的解决方案。如果我按例如 Windows 键 + 空格键,我会得到:

键类型:Windows

我想应该是:

keyTyped:Windows
keyTyped:空格
keyReleased:Windows
keyReleased:空格

我的代码:

        <Java component>.addKeyListener(new KeyListener() {

        @Override
        public void keyTyped(KeyEvent e) {
            e.consume();
        }

        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println("keyTyped: " + KeyEvent.getKeyText(e.getKeyCode()));
            e.consume();
        }

        @Override
        public void keyReleased(KeyEvent e) {
            System.out.println("keyReleased: " + KeyEvent.getKeyText(e.getKeyCode()));
            e.consume();
        }
    });

谢谢!

4

1 回答 1

4

WINDOWS + Space是 Windows 系统的有效全局热键,因此不会通知您的程序(并且永远不会。)它检测到第一个笔划,因为WINDOWS键不是热键(并且仅在释放时展开“开始”菜单。)这就是您不这样做的原因也没有得到释放。

我不知道 Java 是否允许系统范围的钩子,但您可能不得不与 JNI 混淆,我假设您不想处理。

于 2012-02-16T15:04:20.300 回答