Обычно для этой цели используют двойную буферизацию. Но это не решает проблему на 100%.
Следующие трюки могут быть использованы для решения проблемы мерцания в анимации:

  1. Use Media Tracker for downloading the images.
  2. Use double buffering.
  3. Change the default background color of the applet to the color of you Canvas by using setBackground(Color of the Canvas) in the init method of the applet.
  4. In an animation if you are updating only part of a area use repaint(x1,y2,x2,y2) instead of repaint().