After you call repaint() the code must give the JVM's EDT control so it can call the paintComponent() method to draw the new stuff.