как иметь правильный java код привязки клавиш? - PullRequest
0 голосов
/ 22 апреля 2020

Я работаю над небольшой игрой и использую привязки клавиш. В моей игре у меня есть основная 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? Другая проблема - я должен создать новый класс для каждого типа действия, это нормально?

...