3键键盘快捷键

dan*_*382 2 java awt keyboard-events

我需要帮助在我的Java程序中创建键盘快捷键.从下面的代码中可以看出,我需要一个键盘快捷键Ctrl+ + T正常工作并打印"test",但快捷键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;
        }
    }
);
Run Code Online (Sandbox Code Playgroud)

Ian*_*rts 5

a的修饰符InputEvent是一个位字段,因此您使用按位运算来测试它们,而不是简单==.但更简单的方法是使用以下is*Down()方法InputEvent:

if (e.getKeyCode() == java.awt.event.KeyEvent.VK_R && 
    e.isControlDown() && e.isShiftDown()) {
Run Code Online (Sandbox Code Playgroud)