Advertisement
ASP_Volume2 Graphics #39548

Avoid Flicker in an applet

The key to fixing flicker is realizing that the screen isn't actually painted in the paint() method. The pixels get put on the screen in the update() method which most applets don't override. However by overriding the update() method you can do all your painting in an offscreen Image and then just copy the final Image onto the screen with no visible flicker. (Java FAQ:found on the web at:http://sunsite.unc.edu/javafaq/javafaq.html)

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
Add the following three private fields to your applet and the public update() method. Flicker will magically disappear. 

 private Image offScreenImage;
 private Dimension offScreenSize;
 private Graphics offScreenGraphics;
 public final synchronized void update (Graphics g) {
  Dimension d = size();
  if((offScreenImage == null) || (d.width != offScreenSize.width) || (d.height != offScreenSize.height)) {
   offScreenImage = createImage(d.width, d.height);
   offScreenSize = d;
   offScreenGraphics = offScreenImage.getGraphics();
  }
  offScreenGraphics.clearRect(0, 0, d.width, d.height);
  paint(offScreenGraphics);
  g.drawImage(offScreenImage, 0, 0, null);
 }
Original Comments (3)
Recovered from Wayback Machine