Java swing:使用KeyBind模拟buttonClick动画

时间:2016-03-16 05:38:13

标签: java swing audio

我正在制作一个鼓应用程序并且我已经使用了KeyBindings,因此我可以使用键盘触发鼓声。

让我们说btnBassDrm的关键触发器是'B'。我想要做的是当我按'B'时,btnBassDrum(like in mouseClicked event)中按下的按钮的动画也会触发。所以实际上,它真的看起来像是在打鼓。

关于我如何才能做到这一点的任何想法?多谢你们! :)

更多信息:

这就是我使用键绑定的方式:

我有一个名为KeyBind的类,它有6个返回类型Action的方法

public static Action getSnareAction(){
        Action snareAction = new AbstractAction(){
            @Override
            public void actionPerformed(ActionEvent e){
                 try{
                    music=new FileInputStream(new File(Sound.snareSound));
                    AudioStream audios=new AudioStream(music);
                    AudioPlayer.player.start(audios);
                    }
                    catch(Exception ex){
                        JOptionPane.showMessageDialog(null,ex.getLocalizedMessage());
                    }
            }
        };

        return snareAction;
    }

然后在我的Mainform中我有6个方法也可以进行绑定。

public void snareActionKeyBind(){
        snareDrumAction = KeyBind.getSnareAction();

        InputMap inputMap = btnSnareDrum.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
        inputMap.put(KeyStroke.getKeyStroke("E"), "hitSnareDrum");
        btnSnareDrum.getActionMap().put("hitSnareDrum", snareDrumAction);
    }

然后我在Mainform的构造函数中调用这6个方法

public FreePlayForm() {
        initComponents();

        bassActionKeyBind();
        crashActionKeyBind();
        snareActionKeyBind();
        hihatActionKeyBind();
        rackTomActionKeyBind();
        floorTomActionKeyBind();

    }

这是我的表单的样子: enter image description here

只要我按下按键,玩游戏或什么都不做,它就像是一样。它没有"被压下"动画就像你点击它一样。这就是我现在的目标,那就是按下动画"当你按下键。

1 个答案:

答案 0 :(得分:1)

创建Action。 Action可以用作按钮的ActionListener,可以在给定KeyStroke的Key Bindings中使用。

在Swing教程中,您可以阅读以下部分:

  1. How to Use Actions
  2. How to Use Key Bindings
  3. 您可以查看:Attaching A Single Action Listener To All Buttons以获取操作和键绑定的示例。

    编辑:

      

    现在我的目标是当你按下键时“按下动画”。

    然后在Key for Binding的Action中,您需要在相关按钮上调用doClick(),而不是共享Action。因此,对于每个按钮,您需要2个操作

    1. 一个播放声音
    2. 另一个点击按钮,然后点击按钮播放声音