我正在创建一个类似记事本的简单文本编辑器。 如果用户按 F5 ,它会将时间和日期插入到文件中。 我浏览了助记符和加速器,但它们分别与 Alt 和 Ctrl 结合使用。
我应该使用EventListener
还是有其他解决方案?
答案 0 :(得分:9)
你可以简单地使用:
JMenuItem menuItem = new JMenuItem("Refresh");
KeyStroke f5 = KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0);
menuItem.setAccelerator(f5);
KeyStroke 0
未指定docs中所述的修饰符。
ActionListener是菜单项事件的适当侦听器。
答案 1 :(得分:5)
正如部分评论中已经提到的那样,推荐的方法是
一些代码:
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);
答案 2 :(得分:4)
您可以像这样向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);
<强>参考文献:强>