如何使保存快捷键像ctrl+s一样?

问题描述 投票:0回答:1

我有这样的代码

JMenuItem saveMenuItem = new JMenuItem(new MenuItemAction("Save", null, KeyEvent.VK_S, (e) -> saveFile()));
        saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK));

我只是添加了一个带有快捷键的菜单项作为加速器。问题是我不能在不选择其父菜单的情况下触发这个动作。那么,如何将这种快捷方式添加到孔框和这个菜单中呢?

java swing awt
1个回答
1
投票

如果你说的是该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 );
© www.soinside.com 2019 - 2024. All rights reserved.