gpt4 book ai didi

Java Swing : Simulate buttonClick animation with KeyBind

转载 作者:行者123 更新时间:2023-12-01 10:13:38 25 4
gpt4 key购买 nike

我正在制作一个鼓应用程序,并且我使用了 KeyBindings,这样我就可以使用键盘触发鼓的声音。

假设我的 btnBassDrm 的按键触发器是 'B'。我想做的是,当我按下 'B' 时,btnBassDrum(如 mouseClicked 事件) 中按下的按钮的动画也会触发。所以实际上,看起来你确实在打鼓。

关于如何实现这一点有什么想法吗?多谢你们! :)

更多信息:

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

我有一个名为 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 个方法也可以进行绑定(bind)。

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

每当我敲击琴键并演奏或什么都不做时,看起来就是这样。它没有像单击它时那样的“被按下”动画。我现在的目标是当你按下按键时有“被按下的动画”。

最佳答案

创建一个操作。该操作可以用作按钮的 ActionListener,并且可以在给定 KeyStroke 的键绑定(bind)中使用。

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

  1. How to Use Actions
  2. How to Use Key Bindings

您可以查看:Attaching A Single Action Listener To All Buttons有关操作和键绑定(bind)的示例。

编辑:

That's my goal right now to have that "being pressed down animation" when you hit the keys.

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

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

关于Java Swing : Simulate buttonClick animation with KeyBind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36027554/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com