1

我有一个带有几个 JTable 的组件。我已经在桌子上安装了自定义 TransferHandlers。现在,我想要一种在这些表上调用剪切/复制/粘贴命令的方法,方法是:

  1. 菜单栏,适用于当前聚焦的 JTable
  2. JTables 上的弹出菜单
  3. 键盘快捷键,适用于当前聚焦的 JTable

JTable 的 actionMap 已经有“剪切”、“复制”、“粘贴”的条目。这些键的操作执行正确的操作,调用 TransferHandler。

我尝试了以下方法:

dataTable.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(cutMenuItem.getAccelerator(), "cut");

这在我按 cmd-X 时有效,但在我从菜单中选择“剪切”时无效。我认为这是因为菜单消耗了事件,并且它永远不会到达 JTable。

我可以想到几种 hacky 方法来实现这一点,但是有没有一种干净的方法来解决它?如何让我的菜单项将它们发送actionCommand到当前聚焦的组件?

4

1 回答 1

1

目前尚不清楚您如何初始化菜单项。由于JTable不是文本组件之一,您可能希望在非文本组件中查看关于设置菜单的CCPEdit

于 2011-07-22T07:00:04.247 回答