Настройка трехкнопочных клавиш быстрого доступа в Java (OSX) - PullRequest
0 голосов
/ 19 ноября 2009

Я пытаюсь изменить несколько горячих клавиш в приложении Java, на котором я работаю, и кажется, что система, которую я использую, может не работать с тремя комбинациями клавиш. В настоящее время у нас есть элемент JMenuItem, и мы установили горячую клавишу с помощью вызова, подобного этому:

menuItem.setAccelerator(getAcceleratorKey(accelerator));

А вот и метод getAcceleratorKey:

    private KeyStroke getAcceleratorKey(int keyCode) {

    return KeyStroke.getKeyStroke(
                    keyCode,
                    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
                    false);
}

Кажется, что код клавиши, который этот метод принимает в качестве параметра, может быть только одной клавишей, нажатой командой. Так как же тогда сделать что-то вроде Command-shift z для отмены? Нужно ли использовать другой класс?

1 Ответ

1 голос
/ 19 ноября 2009

KeyStroke.getKeyStroke () принимает модификаторы в качестве параметра. Их комбинация должна дать вам то, что вы хотите:

KeyStroke.getKeyStroke(keyCode, 
  java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.META_MASK);
...