我有一个带有几个 JTable 的组件。我已经在桌子上安装了自定义 TransferHandlers。现在,我想要一种在这些表上调用剪切/复制/粘贴命令的方法,方法是:
- 菜单栏,适用于当前聚焦的 JTable
- JTables 上的弹出菜单
- 键盘快捷键,适用于当前聚焦的 JTable
JTable 的 actionMap 已经有“剪切”、“复制”、“粘贴”的条目。这些键的操作执行正确的操作,调用 TransferHandler。
我尝试了以下方法:
dataTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(cutMenuItem.getAccelerator(), "cut");
这在我按 cmd-X 时有效,但在我从菜单中选择“剪切”时无效。我认为这是因为菜单消耗了事件,并且它永远不会到达 JTable。
我可以想到几种 hacky 方法来实现这一点,但是有没有一种干净的方法来解决它?如何让我的菜单项将它们发送actionCommand
到当前聚焦的组件?