java - 使用按键绑定(bind)将操作绑定(bind)到 3 个或更多按键的组合

标签 java swing key-bindings modifiers

我了解如何将修饰符与键绑定(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/

相关文章:

java - 图形加载缓慢或什至无法加载

java - 如何在 JLabel 上使用按键绑定(bind)?

java - 如何从另一个类的另一个数组方法获取数组方法

java - 如何在 Swing 中创建单独的屏幕?

java - OSGi内存管理

java - 如何自动调整 JTree 对象的大小?

终端模拟器中的 Emacs 键绑定(bind)更改

xcode - Xcode 5 中的键绑定(bind)

java - 我有可变数量的文本框如何在 servlet 中检索它们的值

java - 非并发环境下Akka框架的使用