Модификаторы (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.