Я понимаю, как использовать модификаторы с ключевыми привязками, такими как CTRL_DOWN_MASK + some key
, но я хочу, чтобы иметь возможность привязывать определенное действие к тому, когда Control, некоторая буква (т.е. «W»,), и стрелка вверх все нажата. Что-то вроде CTRL_DOWN_MASK + some key + Up Arrow
.Привязать действие к комбинации из 3 или более ключей с помощью привязок клавиш
Я бы использовал это, чтобы изменить громкость определенного звукового клипа. Поэтому, когда у меня есть CTRL_DOWN_MASK + W + Up Arrow
, все нажатые громкость увеличится для звукового клипа, назначенного W JButton, и если у меня есть CTRL_DOWN_MASK + W + Down Arrow
, то громкость будет уменьшаться для упомянутого звукового клипа.
public void bindKey(JPanel base)
{
base.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(key, InputEvent.CTRL_DOWN_MASK),"Volume"+key);
base.getActionMap().put("Volume"+key, new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
//if(Up Arrow is being pressed.)
setGain(currentGain() + 1.0f);
//if(Down Arrow is being pressed.)
setGain(currentGain() - 1.0f);
}
});
}
у вас есть [делать логику самостоятельно] (http://stackoverflow.com/a/13440608/203657) – kleopatra
Спасибо @kleopatra Я проверю это. – Alex
@ kleopatra С вашим ответом в этом сообщении, как бы вы реализовали это в существующей карте действий. Я не понимаю, что вы делаете с расширением AbstractAction, который вы создаете, и тем, как вы назначаете действие для сопоставления клавиш A + S + D. – Alex