我有一个菜单项“rename”,其中F2设置为加速器。事实上,当菜单显示时,在“重命名”旁边有一个小小的“F2”指示。摆动:将功能键(F2)设置为加速器
不幸的是,这是行不通的。这个加速器不会触发任何响应。当我将加速器更改为CTRL + F2时 - 它可以工作。
看来我应该使用InpoutMpa/ActionMap。问题在于,我希望这可以在应用程序中的任何地方工作,所以我试图将它与顶层JFrame关联起来。但是,JFrame没有getInputMap()方法。
丢失。
[新增]
ks = KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0);
JMenuItem mi = new JMenuItem("Rename");
mi.setAccelerator(ks);
mi.addActionListener(action);
请告诉我们编码用于设置加速器! – 2010-01-07 10:02:06
难道你的操作系统/窗口管理器“消耗”了按键,所以它实际上永远不会到达你的Swing应用程序(例如,因为F2被映射到特殊的东西,而Ctrl-F2没有)? – netzwerg 2010-01-07 15:47:07