Thread v swing timer
I have seen this distinction a lot and really don't get what it is. For doing simple animation in java swing, it seems accepted to use swing timer instead of threads. But what is the difference? If you use the ActionListener or ActionEvent, is that a thread?
If anyone knows a good tutorial on this that would be good as well as any I've found so far have been rubbish.
A Swing Timer uses a background thread to allow you to call code repeatedly with a specified time period of repetition. If constructed and used correctly, all code within the Timer's actionPerformed method will be performed on the main Swing thread, the EDT, and this makes using a Swing Timer an easy way for Swing applications to call code repeatedly in this fashion. A disadvantage is the same as the advantage: that all code is called on the EDT, and so if you have a very time/CPU intensive bit of code, it could bog down the Swing thread and thus bog down the percieved responsiveness of your Swing GUI application.
A background thread can also be used to do repeated tasks by having it hold a loop and Thread.sleep(...) but the caveat here is that care must be taken to be sure that almost all Swing calls are performed on the event dispatch thread, lest you risk an intermittent pernicious concurrency error that could crash the application.
Which you choose is up to you. Myself, I'd start with the Swing Timer since it is easier to use and less likely to crash your application.