Nur bestimmt viele JButtons anklickbar machen (JavaSwing)?

1 Antwort

a) Wenn es insgesamt nur sechs Buttons gibt, dann sollte jeder Button eine eigene ActionListener-Instanz zugewiesen bekommen. Dieser ActionListener kriegt ein boolsches Feld, welches zur Prüfung dient, ob die Aktionen in actionPerfomed ausgeführt werden dürfen oder nicht.

private boolean activated = true;

@Override
public void actionPerformed(ActionEvent event) {
  if (!activated) {
    return;
  }

  activated = false;
  // do something ...
}

b) Du brauchst eine Zählervariable, die du an die actionPerformed-Methode der Liste weiterreichst.

Beispiel:

private int counter = 0;

private void init() {
  var button = new JButton();
  button.addActionListener(event -> {
    if (counter >= 6) {
      return;
    }
  
    ++counter;
    // do something ...
  });
}