我瞭解如何使用帶鍵綁定的修改器,如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