java - 3 键键盘快捷键

标签 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;
        }
    }
);

最佳答案

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

if (e.getKeyCode() == java.awt.event.KeyEvent.VK_R && 
    e.isControlDown() && e.isShiftDown()) {

关于java - 3 键键盘快捷键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12663931/

相关文章:

javascript - Javascript 中的 Onkeyup 事件不起作用?

java - 将日期从 UTC 转换为 CET

java - H2 未在我的 Spring Boot 应用程序中创建/更新表。我的实体有问题吗?

Java Swing-JPanel 与 JComponent

java - 我无法将 ImageIcon 添加到 JPanel

reactjs - 如何在 React Native 中监听键盘输入

java - 如何在 Swing 中实现同时在 Windows 和 Linux 下运行的弹出菜单

java - Java EE 中与数据库的简单连接

java - Java TextArea paint 方法在哪里实现?

delphi - 捕获击键以导航自定义控件内手动绘制的项目?