probabilmente è un problema di refresh.
Subito dopo la stampa a video metti questa riga.
codice:
repaint();
Probabilmente con la gif funziona perchè si refresha automaticamente d ogni frame della gif. Cliccando su un punto vuoto forzi il repaint.