如何向JMenuItem添加单个快捷键

Nic*_*oks 4 java swing keyboard-shortcuts

我正在创建一个类似记事本的简单文本编辑器.如果用户按下,它会将时间和日期插入到文件中F5.我浏览了助记符和加速器,但它们分别与Alt和组合使用Ctrl.

我应该使用EventListener或有其他解决方案吗?

Rei*_*eus 9

你可以简单地使用:

JMenuItem menuItem = new JMenuItem("Refresh");
KeyStroke f5 = KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0);
menuItem.setAccelerator(f5);
Run Code Online (Sandbox Code Playgroud)

KeyStroke 0指定了没有修改器,如文档中所述.

ActionListener是菜单项事件的适当侦听器.


kle*_*tra 5

正如在一些评论中已经部分提到的那样,推荐的方法是

  • 使用动作配置menuItem
  • 使用加速器配置操作
  • 将操作添加到菜单中

一些代码:

Action doLog = new AbstractAction("Dummny log!") {

    @Override
    public void actionPerformed(ActionEvent e) {
        LOG.info("doing: " + getValue(Action.NAME));
    }
};
doLog.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("F5"));

JMenu menu = new JMenu("dummy");
menu.add(doLog);
frame.getJMenuBar().add(menu);
Run Code Online (Sandbox Code Playgroud)