キーバインディングに関するJavaチュートリアルと、このサイトの5ダースの投稿を例とともに読みました。次のスニペットが期待どおりに機能しない理由を一生理解できません。
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);
その後、正常に動作します(もちろん、「ctrl + s」ではなく、「s」を押す必要があります)。
明らかな何かが欠けていると確信しています。それは何ですか?