for (int i = 0; i <= 64; i++) {
Вы добавляете 65 панелей.
Код должен быть:
for (int i = 0; i < 64; i++) {
Конструктор GridLayout работает не так, как вы ожидаете:
f.setLayout(new GridLayout(8,8));
Код должен быть:
f.setLayout(new GridLayout(0,8));
Теперь компоненты будут автоматически переноситься при достижении 8-го столбца, добавляя столько строк, сколько необходимо.
Кроме того, обычно вы устанавливаете макетпанели ДО ДО того, как вы добавите компоненты.В случае GridLayout это не имеет значения, но это хороший навык.
Цвета не проблема
Как только вы решите вышеуказанную проблему,станет новой проблемой.Мой оригинальный комментарий касается проблемы.Проблема заключается в вашей логике для определения, как покрасить панели.