Hi Jim,
I think the problem is that, when you call doIncrement() from the ActionListener, you're running it in the event dispatch
thread (all action handlers run in the event dispatch thread). Any thread that runs doIncrement() spends most of its time asleep and therefore has no time to do anything else (e.g. repaint the panel).
You need to look at using a Timer to control your animation instead. You may also want to look at SwingUtilities.invokeLater() which is used to add events to the event queue.
Hope this helps.
Jules