Buongiorno a tutti, io, sto facendo un progetto di un giochino per scuola, sono alle prime armi e ho riscontrato un problema che spero di risolvere con i vostri consigli.
Ho creato una classe contenente un frame con diversi bottoni etc.
Su questo frame devo poter stampare una lista di pannelli, creata in runtime, non statica. Per creare la lista di pannelli ho utilizzato questo metodo nella mia classe
codice:
public void CreaLista(){
    pannelli = new ArrayList<JPanel>();
    for (int i = 0; i < 8; i++) {
           pannelli.add(new JPanel());
          pannelli.get(i).setBackground(Color.BLACK);
    }
}
successivamente li ho stampati nel frame tramite un GridLayout. Fino a qui tutto bene, tutto funziona.
Ora però ho bisogno che questi pannelli, durante la pressione del mouse cambino colore e che quando la pressione del mouse termina ritornino del colore originale. Ho visto che tra gli event handler di un Panel è presente MousePressed e MouseRelased. Ho provato a implementare questi due metodi su un pannello solo e sono riuscito a fargli cambiare colore alla pressione
codice:
        JPanel panel = new JPanel();
        panel.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e) {
                panel.setBackground(Color.RED);
            }
            @Override
            public void mouseReleased(MouseEvent e) {
                panel.setBackground(Color.YELLOW);
            }
        });
        panel.setBounds(107, 52, 80, 71);
        frame.add(panel);
il problema è che non riesco nella maniera più assoluta ad applicare questi due metodi a ogni singolo pannello contenuto nell'ArrayList. Qualcuno sa aiutarmi? Grazie mille in anticipo