Ускорители качания: входная карта или меню? - PullRequest
2 голосов
/ 23 июня 2011

Я хочу добавить ускоритель к компоненту, скажем, отменить / повторить (Ctrl-Z, Ctrl-Y) к JTextComponent, но хотел бы показать действие и его команду быстрого вызова в JMenu, если Я добавляю KeyStroke + AbstractAction к:

  • InputMap компонента,
  • JMenu кадра, содержащего компонент,
  • обоим?

Какой шаблон рекомендуется в этом случае?

Ответы [ 3 ]

2 голосов
/ 23 июня 2011

Но когда уместно использовать InputMap с ускорителями, тогда?

Меню работает так, чтобы автоматически добавлять привязки в InputMap / ActionMap.Поэтому, если вы хотите, чтобы это было задокументировано в меню, вы бы только добавили его в меню и не делали ручное сопоставление с компонентом.

Один случай, когда вы добавляете связывание клавиш только к компоненту, этонужно иметь разные действия для каждого компонента.Например, вы можете создать пункты меню для «копирования», «вставки» в текстовые компоненты.Но другие компоненты, такие как JTable, также поддерживают копирование и вставку.В этом случае у вас не может быть двух пунктов меню с одним и тем же ускорителем, поэтому вы привязываете действие Action непосредственно к таблице.

2 голосов
/ 23 июня 2011

Если вы хотите сделать оба, как подразумевает ваше описание, то сделайте оба. Это нормально.

Однако, если отмена / повтор применяется только к одному компоненту из нескольких в кадре, я бы не советовал добавлять его в меню кадра. (Хотя вы можете создать JPopupMenu для компонента).

0 голосов
/ 23 июня 2011

Чисто с точки зрения пользователя: я бы предпочел видеть ярлыки в меню (или контекстных меню), потому что это помогает мне их изучать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...