Объединение функций буфера обмена JMenu, ускорителей и поддержки actionMenu (лучшие практики) - PullRequest
1 голос
/ 22 июля 2011

У меня есть компонент с несколькими JTables.Я установил пользовательские TransferHandlers на столах.Теперь я хочу, чтобы средство вызывало команды вырезания / копирования / вставки для этих таблиц с помощью:

  1. Menubar, который работает на всплывающем меню JTable
  2. , которое в настоящее время сосредоточено наJTables
  3. Сочетание клавиш, которое работает на текущем JTable

В ActionMap JTable уже есть записи для «вырезать», «копировать», «вставить».Действия с этими клавишами делают правильно, вызывая TransferHandler.

Я пробовал следующее:

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

Это работает, когда я нажимаю cmd-X, но не когда я выбираю«вырезать» из меню.Я предполагаю, что это потому, что меню потребляет событие, и оно никогда не попадает в JTable.

Я могу придумать несколько хакерских способов реализовать это, но есть ли чистый способ сделать это?Как я могу получить свои пункты меню для отправки их actionCommand в текущий компонент?

1 Ответ

1 голос
/ 22 июля 2011

Непонятно, как вы инициализируете пункты меню. Поскольку JTable является , а не одним из текстовых компонентов, вы можете захотеть взглянуть на CCP в нетекстовом компоненте в отношении настройки Edit меню.

...