如何更改输入/操作映射,以便在将操作绑定到特定键时,它还会将操作绑定到 Some Modifier +特定键?
即。 SHIFT_DOWN_MASK + specific key
所以我的所有键绑定都可以在没有修饰符的情况下工作。我正在为键盘上的某个字母分配声音文件,当我按下该键时,会播放声音文件。我还有代码来循环声音文件,切换它是否循环,并检查它是否循环。我想拥有它,除了将play()
操作绑定到键之外,它还会将toggleLoop()
操作绑定到操作SHIFT_DOWN_MASK + specific key
。
我绑定行动的地方:
@SuppressWarnings("serial")
public void bindKey(JPanel base)
{
base.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(key),"play"+key);
base.getActionMap().put("play"+key, new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
System.out.println(key + " Pressed");
play();
}
});
//assigning action just the key pressed
base.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke((char)(key-32), InputEvent.SHIFT_DOWN_MASK),"loop"+(char)(key-32));
base.getActionMap().put("loop"+(char)(key-32), new AbstractAction(){
public void actionPerformed(ActionEvent e)
{
System.out.println(key + " toggled loop");
toggleLoop();
//fix toggle
}
});
//^ where I try to assign action to modifier
}
答案 0 :(得分:1)
FIXED:更改为(char)(键-32),因此它会将其分配给 小写字符,因为我在设置'W'而不是'w' 使用了移位修饰符。