首页 > 解决方案 > 如何拥有正确的 java 键绑定代码?

问题描述

我正在开发一个小游戏并使用键绑定。在我的游戏中,我有一个主 JPanel,其中包含我想要的所有绑定,因为所有键都应该随时可用。在阅读了一些示例后,我有这个工作代码:

    KeyStroke endTurnKey = KeyStroke.getKeyStroke("F2");
    mainPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(endTurnKey, "endTurnAction");
    mainPanel.getActionMap().put("endTurnAction", new EndTurn(this));

    for (int i = 0; i < 6; i++) {
        KeyStroke selectSpell = KeyStroke.getKeyStroke(49 + i, 0);
        mainPanel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(selectSpell, "selectSpell" + i);
        mainPanel.getActionMap().put("selectSpell" + i, new SelectSpell(this, i));
    }

我的 SelectSpell 课程是:

public class SelectSpell extends AbstractAction {

private static final long serialVersionUID = 1L;

private World w;
private int spellIndex;

public SelectSpell(World w, int spellIndex) {
    this.w = w;
    this.spellIndex = spellIndex;
}

@Override
public void actionPerformed(ActionEvent arg0) {
    // Whatever depending on spellIndex
}
}

我想要的是一个类或我可以命名为“绑定”的东西,并带有连续的“此键执行此操作,此操作执行此操作,......”以便轻松更改它们,添加新的......我也找到了我的AbstractAction 继承的类有点......在某些方面是错误的,使用局部变量来指定在 actionPerformed 中做什么是正常的吗?另一个问题是我必须为每种类型的动作创建一个新类,这正常吗?

标签: javaswingkey-bindings

解决方案


推荐阅读