我已经阅读了有关键绑定(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/