gpt4 book ai didi

java - 有没有一种方法可以有效地添加多个按键绑定(bind)?

转载 作者:行者123 更新时间:2023-12-01 11:14:28 25 4
gpt4 key购买 nike

我目前正在重新创建 Snake 并使用 KeyListener 将箭头键绑定(bind)到某些命令。最近,我听说按键绑定(bind)更好,并决定进行切换,但几乎不理解 Oracle 的相关文章。

现在,要绑定(bind)箭头键,我必须这样做:

    panel.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0),"left");
panel.getActionMap().put("left", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
addToQueue(LEFT);
}
});
panel.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0),"up");
panel.getActionMap().put("up", new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
addToQueue(UP);
}
});
// Another two for right and down are in my code but you get the picture.

必须有一种更简单的方法来做到这一点,对吧?我尝试用谷歌搜索,但一无所获,而且我几乎不知道 InputMap 和 ActionMap 是什么,所以我不太确定从这里该去哪里。

最佳答案

虽然这只是将问题转储到函数中,但您可以将此行为隐藏在过程后面:

void bindKeyToAction(Panel p, KeyEvent ke, String id, Object o){

p.getInputMap().put(KeyStroke.getKeyStroke(ke, 0),id);
p.getActionMap().put(id, new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e){
addToQueue(o);
}
});

}

由于我没有看到 LEFT 和 UP 对象的对象类型,因此我在方法中使用了 Object o。

因此,要进行绑定(bind),您只需调用此函数即可。

bindKeyToAction(panel, KeyEvent.UP, "up", UP);
bindKeyToAction(panel, KeyEvent.Left, "left", LEFT);

关于java - 有没有一种方法可以有效地添加多个按键绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993354/

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