0

我了解如何将修饰符与键绑定一起使用,CTRL_DOWN_MASK + some key但我希望能够将特定操作绑定到当控件、某些字母(即“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);
            }
        });
     }
4

1 回答 1

3

你需要更多的手......我认为这就是他们将其限制为修饰符和主键的原因。您是否考虑过 ctrl+w 启动界面,然后您可以按向上或向下调整音量?

您的另一个选择是在 ctrl+w 和 ctrl+up 键上映射键绑定。然后,只要它们都处于活动状态,请执行您的操作。您需要设置标志并有两个映射 - 一个用于按下,一个用于释放。您可以查看Keystroke 类以获取有关设置键以进行映射的更多详细信息。

于 2012-12-20T19:58:17.410 回答