Senza maggiori dettagli io ti consiglierei un ciclo in cui aggiungi un diverso ActionListener per ogni pulsante, alla pressione del pulsante potresti aprire una finestrella modale con i dettagli (non userei come stai facendo tu i setVisible sui componenti come la label dei dettagli, non che non si possa fare ma ci vuole cautela), qualcosa di questo tipo, anche se molto abbozzato e con classi fittizie, tanto per mostrare lo schema:
for (Iscrizione iscrizione : listaIscrizioni) {
//...
panel.add (new JButton (new AbstractAction ("Dettagli") {
@Override public void actionPerformed (ActionEvent e) {
new DetailsDialog (iscrizione.getDettagli ()).setVisible (true);
}
}));
// ...
}
Ovviamente se non hai un layout che dispone in automatico i componenti in una qualche griglia, come il GridLayout, ma hai bisogno dell'indice, puoi sostituire il for-each con un normale ciclo for.
Il punto principale è che con questa soluzione non hai alcun bisogno di tenere reference ai bottoni o agli ActionListener, crei tutto al volo, e ad ogni iterazione del ciclo avrai il tuo oggetto che rappresenta l'iscrizione, quindi puoi prenderne i dettagli o fare quello che vuoi: io appunto creerei una piccola dialog modale (DetailsDialog) che mostra i dettagli e può essere solo chiusa (come avviene per moltissimi programmi), poi ci sono diverse soluzioni ovviamente.