【发布时间】:2023-03-27 03:46:01
【问题描述】:
我了解如何将修饰符与 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);
}
});
}
【问题讨论】:
-
谢谢@kleopatra,我会检查一下。
-
@kleopatra 有了您在那篇文章中的回答,您将如何将其实施到现有的行动地图中。我不明白您在扩展您创建的 AbstractAction 以及如何将操作分配给键 A + S + D 的映射。
标签: java swing key-bindings modifiers