我正在创建一个类似于记事本的简单文本编辑器。如果用户按下 ,它将在文件中插入时间和日期F5。我浏览了助记符和加速器,但它们分别与Alt和结合使用Ctrl。
我应该使用EventListener
还是有其他解决方案?
我正在创建一个类似于记事本的简单文本编辑器。如果用户按下 ,它将在文件中插入时间和日期F5。我浏览了助记符和加速器,但它们分别与Alt和结合使用Ctrl。
我应该使用EventListener
还是有其他解决方案?
你可以简单地使用:
JMenuItem menuItem = new JMenuItem("Refresh");
KeyStroke f5 = KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0);
menuItem.setAccelerator(f5);
KeyStroke 没有0
指定任何修饰符,如文档中所述。
ActionListener 是菜单项事件的适当侦听器。
正如一些评论中已经部分提到的那样,推荐的方法是
一些代码:
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);
KeyBinding
您可以像这样添加一个JMenuItem
:
Action sayHello = new AbstractAction() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null,"Hello World, From JMenuItem :)");
}
};
jMenuItem.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F5"),"sayHello");//4.The WHEN_IN_FOCUSED_WINDOW input maps of all the enabled components in the focused window are searched.
jMenuItem.getActionMap().put("sayHello",sayHello);
参考: