我了解如何将修饰符与键绑定(bind)一起使用,例如 CTRL_DOWN_MASK + 某些键
,但我希望能够将特定操作绑定(bind)到 Control、某些字母(即“W”)和向上箭头全部被按下。类似于 CTRL_DOWN_MASK + 某个键 + 向上箭头
。
我会用它来改变某个声音剪辑的音量。因此,当我按下 CTRL_DOWN_MASK + W + 向上箭头
时,分配给 W JButton 的声音剪辑的音量将会增加,如果我按下 CTRL_DOWN_MASK + W + 向下箭头
所述声音片段的音量将会减小。
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);
}
});
}
最佳答案
你需要更多的手......我认为这就是为什么他们将其限制为修饰符和主键。您是否考虑过按 ctrl+w 启动界面,然后按向上或向下调节音量?
您的另一个选择是将键绑定(bind)映射到 ctrl+w 和 ctrl+up 键上。然后,每当他们都活跃时,就采取你的行动。您需要设置标志并有两种映射 - 一种用于按下,一种用于释放。你可以看到Keystroke class有关设置映射键的更多详细信息。
关于java - 使用按键绑定(bind)将操作绑定(bind)到 3 个或更多按键的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13978930/