3键键盘快捷键

时间:2012-09-30 18:40:45

标签: java awt keyboard-events

我需要帮助在我的Java程序中创建键盘快捷键。从下面的代码中可以看出,我需要一个键盘快捷键 Ctrl + T ,它可以正常工作并打印"test",但快捷方式< kbd> Ctrl + Shift + T 未按预期打印"test2",没有任何反应:

KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(
    new KeyEventDispatcher() {
        public boolean dispatchKeyEvent(KeyEvent e) {
            switch (e.getID()) {
                case KeyEvent.KEY_PRESSED:
                    if (e.getKeyCode() == java.awt.event.KeyEvent.VK_T && 
                        e.getModifiers() == java.awt.event.InputEvent.CTRL_MASK) {
                        System.out.print("test");   
                    } else if (e.getKeyCode() == java.awt.event.KeyEvent.VK_R && 
                               e.getModifiers() == java.awt.event.InputEvent.CTRL_MASK &&
                               e.getModifiers() == java.awt.event.InputEvent.SHIFT_MASK) {
                        System.out.print("test2");  
                    }       
                break;
            }
            return true;
        }
    }
);

1 个答案:

答案 0 :(得分:5)

InputEvent的修饰符是位字段,因此您使用按位运算测试它们,而不仅仅是==。但更简单的方法是使用is*Down()的{​​{1}}方法:

InputEvent