我了解如何使用带键绑定的修改器,如CTRL_DOWN_MASK + some key
,但我希望能够将特定动作绑定到控件时,某个字母(即'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