Модификаторы (SHIFT + (Случайный ключ)) в связывании клавиш

Как я могу изменить карту ввода / действия, чтобы при привязывании действия к определенному ключу оно также связывало действие с некоторым ключом " Модификатор +"?

т.е. SHIFT_DOWN_MASK + specific key

Так что все мои привязки клавиш работают без модификаторов. Я назначаю звуковой файл определенной букве на клавиатуре, и когда я нажимаю эту клавишу, воспроизводится звуковой файл. У меня также есть код для зацикливания звукового файла, переключения между циклами и проверки его зацикливания. Я хочу, чтобы в дополнение к обязательному play() действие на ключ, он будет связывать toggleLoop() действие к действию SHIFT_DOWN_MASK + specific key,

Где я связываю действия:

    @SuppressWarnings("serial")
    public void bindKey(JPanel base)
    {
        base.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(key),"play"+key);
        base.getActionMap().put("play"+key, new AbstractAction(){
            public void actionPerformed(ActionEvent e) 
            {
                System.out.println(key + " Pressed");
                play();

            }
        });

        //assigning action just the key pressed

        base.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke((char)(key-32), InputEvent.SHIFT_DOWN_MASK),"loop"+(char)(key-32));
        base.getActionMap().put("loop"+(char)(key-32), new AbstractAction(){
            public void actionPerformed(ActionEvent e) 
            {
                System.out.println(key + " toggled loop");
                toggleLoop();
                //fix toggle

            }
        });

        //^ where I try to assign action to modifier



    }

1 ответ

ИСПРАВЛЕНО: Изменено на (char)(key-32), чтобы назначать его символу в нижнем регистре, потому что он устанавливал "W" вместо "w", когда я использовал модификатор shift.

Другие вопросы по тегам