java - 为什么这个 Java Swing 键绑定(bind)不起作用?

标签 java swing key-bindings

我已经阅读了有关键绑定(bind)的 Java 教程以及该网站上的六篇带有示例的帖子。我一生都无法弄清楚为什么以下代码片段没有按预期工作:

    String ctrlSave = "CTRL Save";
    myPanel.getInputMap().put(KeyStroke.getKeyStroke('s', InputEvent.CTRL_DOWN_MASK), ctrlSave);
    myPanel.getActionMap().put(ctrlSave, new AbstractAction() {
        @Override
        public void actionPerformed(ActionEvent e) {
            int returnVal = chooserFileSave.showSaveDialog(myPanel);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                fileSave = chooserFileSave.getSelectedFile();
                myPanel.getActiveRoute().saveToGPXFile(fileSave);
            }
        }
    });

如果我替换它:

myPanel.getInputMap().put(KeyStroke.getKeyStroke('s', InputEvent.CTRL_DOWN_MASK), ctrlSave);

这样:

myPanel.getInputMap().put(KeyStroke.getKeyStroke('s'), ctrlSave);

然后就可以正常工作了(当然,我必须按 then 's',而不是按我想要的“ctrl+s”)。

我确信我遗漏了一些明显的东西。它是什么?

最佳答案

您是否尝试使用:

KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK);

关于java - 为什么这个 Java Swing 键绑定(bind)不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330929/

相关文章:

emacs - 如何在 Emacs 中创建区分大小写的键绑定(bind)?

vim - 如何以不同方式映射 Ctrl+A 和 Ctrl+Shift+A?

Java SE服务器+数据库+REST框架

java - 如何添加 e.getmessage() 作为 java 方法的返回

java - 动态更新 BufferedImage 时遇到问题

java - 如何使用JLabel?

Java 8 流 : Extract map from list of objects and sum specific key

java - Java lambda 可以有超过 1 个参数吗?

java - 不允许 JTable 绑定(bind)

java - Java- JTable键绑定(bind)