Когда вы звоните removeAll()
на cell[i][j]
в update
, вы не удаляете их из boardGUI
.Они все еще дети boardGUI
и будут раскрашены.вот почему вы видите изображения-призраки.
Я бы порекомендовал установить исходную доску, как вы, а затем просто установить другое изображение для существующего JLabel
и не пытаться заново создать JLabels
постоянно.