Ok, questo l'ho capito, in ogni cella del GridLayout metto un pannello, ma in questo pannello, che layout metto? E mettendo un JButton e una JLabel, mi si sovrappongono?

Perchè ora io ho fatto un pannello con la matrice di pulsanti e un pannello con la matrice di etichette.
Poi faccio:
add(jpL) //pannello JLabels
add(jpB) //pannello JButtons

quindi prima metto il pannello delle labels sotto, e poi quello dei pulsanti sopra.
Però quando clicco su un pulsante, col relativo gestore, il pulsante scompare (ed è giusto) ma non mi vede sotto la JLabel.

Se faccio come dici te non è che il problema rimane?