java - Swing 加速器 : inputMap or menu?

标签 java swing

我想给组件添加一个加速器,比如对 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/

相关文章:

java - Ubuntu 中的 LookAndFeel 没有改变

java - 查找和替换对话框

java - 将选定的 Jtable 行添加到列表模型

java - 我应该在此代码示例中为变量赋予什么修饰符?

java - 从 Android 设备访问 SQL DB 时,我的 httpEntity 返回 null,任何人都可以告诉我这是为什么吗?

java - jetty 启动时抛出奇怪的 java.lang.ArrayIndexOutOfBoundsException

java - 设计多模块 Java EE 应用程序

java - 在 swing 中实现 JTreeTable

java - 从自定义比较器获取 boolean 值答案

java - 当按下某些其他键时,KeyEvent 不会触发