Java 结合JMenu剪贴板功能、加速器和actionMenu支持(最佳实践)

Java 结合JMenu剪贴板功能、加速器和actionMenu支持(最佳实践),java,swing,jtable,jmenu,Java,Swing,Jtable,Jmenu,我有一个组件,上面有几个JTable。我已经在表上安装了自定义TransferHandler。现在,我想通过以下方式调用这些表上的剪切/复制/粘贴命令: 菜单栏,用于当前关注的JTable JTables上的弹出菜单 键盘快捷键,用于当前关注的JTable JTable的actionMap已经有了“剪切”、“复制”、“粘贴”的条目。这些键的操作调用TransferHandler,做正确的事情 我尝试了以下方法: dataTable.getInputMap(JComponent.WHEN_ANCE

我有一个组件,上面有几个JTable。我已经在表上安装了自定义TransferHandler。现在,我想通过以下方式调用这些表上的剪切/复制/粘贴命令:

  • 菜单栏,用于当前关注的JTable
  • JTables上的弹出菜单
  • 键盘快捷键,用于当前关注的JTable
  • JTable的actionMap已经有了“剪切”、“复制”、“粘贴”的条目。这些键的操作调用TransferHandler,做正确的事情

    我尝试了以下方法:

    dataTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(cutMenuItem.getAccelerator(), "cut");
    
    当我按下cmd-X键时,此功能有效,但当我从菜单中选择“剪切”时则无效。我假设这是因为菜单消耗事件,而它永远不会到达JTable


    我可以想出几种简单的方法来实现这一点,但是有没有一种干净的方法呢?如何让菜单项将其
    actionCommand
    发送到当前关注的组件?

    不清楚如何初始化菜单项。由于
    JTable
    不是文本组件之一,您可能需要了解如何设置
    Edit
    菜单。

    不清楚如何初始化菜单项。由于
    JTable
    不是文本组件之一,您可能想看看如何设置
    Edit
    菜单。

    对那篇CCP文章不感兴趣(一方面,听者会泄露内存,键盘快捷键也不会跨平台),但这似乎是实现我所希望的最佳方式。谢谢对那篇CCP文章不感兴趣(一方面,听者会泄露内存,键盘快捷键也不会跨平台),但这似乎是做我想做的事情的最佳方式。谢谢