Crea un ActionListener che, in base ad una variabile (ad esempio una booleana se hai solo due colori) cambi il colore delle textfield:
codice:
public class CambiaColore implements ActionListener {
private boolean colorWhite;
private JTextField[][] matrice;
public CambiaColore(JTextField[][] matrice) {
this.matrice = matrice;
colorWhite = true; // all'inizio le JTextField sono bianche
}
@Override
public void actionPerformed(ActionEvent ae) {
// Cambio il colore a tutte le JTextField in base al valore di "colorWhite"
for(int row=0; row<matrice.length; row++) {
for(int col=0; col<matrice[row].length; col++) {
matrice[row][col].setBackground(colorWhite ? Color.BLACK : Color.WHITE);
}
}
colorWhite = !colorWhite;
}
}
Poi crei un Timer (javax.swing.Timer) passandogli un'istanza di questo ActionListener ed il delay (ovvero, il tempo di pausa):
codice:
// Suppongo che la matrice di JTextField si chiami "m", come da tuo esempio
// 2000 = 2 secondi (2000 millisecondi)
new Timer(2000, new CambiaColore(m)).start();
Ciao.