Java2D for drawing
Swing/AWT events for user interaction
SwingTimers/Threads for animations (and how to use Threads with Swing - aka the Swing single threaded model)
elementary physics for things...