我正在制作一个鼓应用程序并且我已经使用了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();
}
只要我按下按键,玩游戏或什么都不做,它就像是一样。它没有"被压下"动画就像你点击它一样。这就是我现在的目标,那就是按下动画"当你按下键。
答案 0 :(得分:1)
创建Action
。 Action可以用作按钮的ActionListener,可以在给定KeyStroke的Key Bindings中使用。
在Swing教程中,您可以阅读以下部分:
您可以查看:Attaching A Single Action Listener To All Buttons以获取操作和键绑定的示例。
编辑:
现在我的目标是当你按下键时“按下动画”。
然后在Key for Binding的Action中,您需要在相关按钮上调用doClick(),而不是共享Action。因此,对于每个按钮,您需要2个操作