I have done a fair bit of work in collision detection, for some fun projects I have done. keep in mind that your trigonometry formulas will most likely be in double precision floating point, but your
java draw commands will be in integers. This can cause some problems if you don't do it right. I have often struggled with "double collisions" where my sprites or whatever will detect a collision, adjust their direction, then detect the collision again before they have had time to separate. So they end up doing some weird kind of wobbly dance.
Another thing is that my motion formulas for spheres typically use the center point, while the draw command will use the top left corner of the square that contains the sphere, so some kind of basic linear transformation is required. No real issues there.
I have found the following javaworld article to be very helpful. It discusses threads and animation
applets. The information about threads is a little outdated, it uses some methods that have since been deprecated, and it also uses applets instead of swing, but it really helped me get over the hump.
http://www.javaworld.com/javaworld/jw-03-1996/jw-03-animation.html
have fun