Now you've gotten the wait and incrementing i off the AWT
thread into the timer thread which is a good thing. It's probably not a good thing for the timer thread to update the label text, though. I've done this and had all kinds of weird user experience problems ... fields would only update if you resized the window and such.
The trick is to put the update into yet another runnable on the AWT thread. Look up the
doc on SwingUtilities.invokeLater() and holler if you need help.