我有这样的代码
JMenuItem saveMenuItem = new JMenuItem(new MenuItemAction("Save", null, KeyEvent.VK_S, (e) -> saveFile()));
saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));
我只是添加了一个带有快捷键的菜单项作为加速器。问题是我不能在不选择其父菜单的情况下触发这个动作。那么,如何将这种快捷方式添加到孔框和这个菜单中呢?
如果你说的是该key-event的applicationglobal-scope,所以你可以将key-event添加到根窗格键映射中。
例如,在表单初始化过程中,类似于下面的内容。
this.getRootPane().registerKeyboardAction(new ActionListener() {//this, is a JFrame
@Override
public void actionPerformed(ActionEvent e) {
//call the related ctrl + s func
}
}, KeyStroke.getKeyStroke(KeyEvent.VK_S,KeyEvent.CTRL_DOWN_MASK),JComponent.WHEN_IN_FOCUSED_WINDOW );