2

如何更改输入/操作映射,以便当我将操作绑定到特定键时,它还会将操作绑定到某些修饰符+ 特定键?

IESHIFT_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



    }
4

1 回答 1

1

修复:更改为 (char)(key-32) 以便将其分配给小写字符,因为当我使用 shift 修饰符时它设置的是 'W' 而不是 'w'。

于 2012-12-05T21:33:58.633 回答