我理解如何使用带有键绑定的修饰符,例如CTRL_DOWN_MASK + some key
,但我希望能够将特定操作绑定到Control,某些字母(即'W')和向上箭头都被按下时。像CTRL_DOWN_MASK + some key + Up Arrow
这样的东西。
我会用它来改变某个声音片段的音量。因此,当我按下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);
}
});
}
答案 0 :(得分:3)
你需要更多的牌......我认为这就是为什么他们将它限制在修饰符和主键之间。您是否考虑过ctrl + w启动界面,然后按下或调低音量?
您的另一个选择是在ctrl + w和ctrl + up键上映射键绑定。然后,只要他们都活跃,就行动吧。你需要设置标志并有两个映射 - 一个用于按下,一个用于释放。您可以查看Keystroke class以获取有关设置映射键的更多详细信息。