# Memory - Nicht alle Button lassen sich aktivieren?



## raphaelduke (9. Apr 2019)

Hallo,
Ich bin immer noch an meinem Schulprojekt dran, wo ich mit Java ein Memory erstellen soll. Es läuft gerade nicht sehr schlecht, nun bin ich aber auf ein Problem gestossen.
Und zwar: Beim Starten des Memorys sollen alle Kärtchen also Buttons, deaktiviert sein und erst bei einem klick auf Start Game aktiv werden. Zu beginn alle zu deaktivieren, ist kein Problem. Aber sie danach wieder zu aktivieren, funktioniert nicht wirklich. Es wird nämlich nur das Kärtchen unten Rechts aktiviert. 

Vgl. Code unten.

Danke für alle Antworten!


```
package Umsetzung;
import javax.swing.*;
import java.awt.event.*;
import java.awt.Color;
import java.util.Random;
public class InputWindow extends JFrame implements ActionListener
{

// Variabeln (Vor-) Deklaration:
    private JButton StartGame;
    private JButton ExitGame;
    private JButton ResetGame;
    private JButton Button1;


public InputWindow ()   // Erstellen der 3 Buttons fürs Interface:
{
    super ("Memory");
    JPanel ContentPlate = new JPanel();
    ContentPlate.setLayout(null);

    StartGame = new JButton ("Spiel starten");
    StartGame.setSize(110, 30);
    StartGame.setLocation(25, 590);
    StartGame.addActionListener(this);
    ContentPlate.add (StartGame);

    ResetGame = new JButton ("Reset");
    ResetGame.setSize(110, 30);
    ResetGame.setLocation(600, 590);
    ResetGame.addActionListener(this);
    ContentPlate.add (ResetGame);

    ExitGame = new JButton ("Beenden");
    ExitGame.setSize(110, 30);
    ExitGame.setLocation(313, 590);
    ExitGame.addActionListener(this);
    ContentPlate.add (ExitGame);
    setContentPane (ContentPlate);

    final int Anzahl = 64; // Array mit Zahlen von 1-32 gefüllt. So eingestellt, dass alle Zahlen von 1-32 je 2 mal vorkommen. Total = 64 Zahlen
    int[] Werte = new int [Anzahl];
    for (int i = 0; i < 32; i++) {
        Werte [i] = i+1;
        
        for (int f = 32; f < 64; f++) {
            Werte [f] = f-31;
        }}
Random ZGenerator = new Random (); // Zahlen werden zufällig angeordnet
    for (int p=0; p<Werte.length; p++) {
    int randomPosition = ZGenerator.nextInt(Werte.length);
    int temp = Werte [p];
    Werte[p] = Werte[randomPosition];
    Werte[randomPosition] = temp;
    }
    
int Kartenanzahl = 64; // Button Array
    JButton [] Karten1 = new JButton [Kartenanzahl];
    for (int a = 0; a < 64; a++) {
    
Karten1 [a] =  Button1 = new JButton (""+Werte[a]); // Button Einstellungen
    Button1.setSize(50, 50);
    Button1.setLocation((a%8*70)+100,(((int)a/8)*70)+40);
    Button1.addActionListener(this);
    Button1.setBackground(Color.ORANGE);
    ContentPlate.add(Button1);
    
    Button1.setEnabled(false); // Button deaktivieren und aktivieren (false = deaktiviert / true = aktiviert)
    
    
                    }}

    public void actionPerformed (ActionEvent Aktion) {

        Object Quelle = Aktion.getSource ();

// Memory starten:
        if (Quelle == StartGame) {System.out.println ("Sie haben das Spiel gestartet"); Button1.setEnabled(true);} // Bei Start alle Knöpfe aktivieren... geht noch nicht, nur rechts unten wird aktiviert?!

// Memory zurücksetzen:
        if (Quelle == ResetGame) {System.out.println ("Sie haben das Spiel zurückgesetzt");dispose();
        InputWindow ResetWindow = new InputWindow();
        ResetWindow.setSize(745, 680);
        ResetWindow.setLocationRelativeTo(null);
        ResetWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        ResetWindow.setVisible(true);}

// Memory beenden:
        if (Quelle == ExitGame) {System.out.println ("Sie haben das Spiel verlassen");System.exit(0);}


((JButton)Aktion.getSource()).setBackground(Color.GREEN); //Beim klicken auf den Button Farbe auf Grümd ändern
}
public static void main (String[]args ) {
    
// Eigentliches Fenster:
    InputWindow Window= new InputWindow();
    Window.setSize(745, 680);
    Window.setLocationRelativeTo(null);
    Window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    Window.setVisible (true);
    
}
}
```


----------



## JCODA (9. Apr 2019)

Du solltest nicht "einen" button als Instanzattribut halten, sondern das komplette "Karten"-Button-Array.
Und dann für enablen einen forschleife nutzen.


----------

