2

我需要帮助才能在我的 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;
        }
    }
);
4

1 回答 1

5

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

if (e.getKeyCode() == java.awt.event.KeyEvent.VK_R && 
    e.isControlDown() && e.isShiftDown()) {
于 2012-09-30T18:58:24.713 回答