Установка трех кнопок с акселератором горячих клавиш в Java (OSX)

StackOverflow https://stackoverflow.com/questions/1759760

Вопрос

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

menuItem.setAccelerator(getAcceleratorKey(accelerator));

А вот метод getacceleratorkey:

    private KeyStroke getAcceleratorKey(int keyCode) {

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

Похоже, что клавиш, который этот метод принимает в виде параметра, может быть только одна нажатая клавиша с помощью команды. Так как же я сделаю что-то вроде командного смены Z для отмены? Мне нужно использовать другой класс?

Это было полезно?

Решение

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

KeyStroke.getKeyStroke(keyCode, 
  java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.META_MASK);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top