我想给组件添加一个加速器,比如对 JTextComponent
执行撤消/重做(Ctrl-Z、Ctrl-Y),但想在JMenu
,我应该将 KeyStroke
+ AbstractAction
添加到:
- 组件的
InputMap
, - 到包含组件的框架的
JMenu
, - 对双方?
在这种情况下推荐的模式是什么?
最佳答案
But when is it proper to use an InputMap with accelerators, then ?
菜单的工作方式是自动为您添加绑定(bind)到 InputMap/ActionMap。因此,如果您希望将其记录在菜单中,那么您只需将其添加到菜单中,而不是对组件进行手动映射。
一种情况下,您只需要将 KeyBinding 添加到组件,即您需要为每个组件设置不同的 Action。例如,您可以为文本组件上的“复制”、“粘贴”创建菜单项。但是 JTable 等其他组件也支持复制和粘贴。在这种情况下,您不能有两个具有相同快捷键的菜单项,因此您将表 Action 直接绑定(bind)到表。
关于java - Swing 加速器 : inputMap or menu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452430/