使用键绑定将操作绑定到3个或更多键的组合

时间:2012-12-20 19:14:48

标签: java swing key-bindings modifiers

我理解如何使用带有键绑定的修饰符,例如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);
            }
        });
     }

1 个答案:

答案 0 :(得分:3)

你需要更多的牌......我认为这就是为什么他们将它限制在修饰符和主键之间。您是否考虑过ctrl + w启动界面,然后按下或调低音量?

您的另一个选择是在ctrl + w和ctrl + up键上映射键绑定。然后,只要他们都活跃,就行动吧。你需要设置标志并有两个映射 - 一个用于按下,一个用于释放。您可以查看Keystroke class以获取有关设置映射键的更多详细信息。