我已经阅读了有关键绑定的 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);
然后它工作正常(当然,我必须按's'而不是我想要的“ctrl+s”)。
我确定我遗漏了一些明显的东西。它是什么?