@AbstractChaos:
In terms of doing things where the "general architecture" handles as much as is reasonable, IMHO, it is quite acceptable to use a Timer object to run your game loop with passive rendering. (I am imagining ra4king with fingers in his ears singing "la la la" while I say this.

)
With a Timer, one can set a "TimerTask" to repeat indefinitely at a given interval, which circumvents the need to manage cycle time consistency. Quite a few people here don't like this method, but I think it is fine for games where you have some slack, aren't trying to eke the max out of every cpu cycle. Note that there are two different repeating modes, one where TimerTasks go end-on-end (and cycle times can slip), another where the system does its best to keep the starting times absolutely on track.
Basically, one writes a TimerTask that will do the following:
1) call update() on all updateable objects (which could be in a collection)
2) call reprint() on the display screen.
The calling code specifies the duration, in milliseconds, between the calls to this TimerTask. Pretty simple!
"Killer Game Programming in Java" analyzes the Timer as an option (not their first choice either) and concludes that the java.util.timer (as opposed to the swing.timer) has decent resolution, pretty comparable to their regular game loop. The inaccuracy due to the OS/system clock issue still pertains, as does the solution already mentioned. The concurrency issues that arise with util.Timer seem quite manageable to me. Again, some folks strongly disagree. I think that learning to code in a thread-safe way is generally a good thing.
Since Java 1.5, a ScheduledThreadPoolExecutor is considered a superior option to a Timer. This is what I plan to do try in place of my Timer-based game loop, when I'm ready to refactor Hexara.
I haven't dealt with full screen mode, but the Java Tutorials devotes a full section just for demanding graphical applications, which includes info on this. If you haven't seen it yet, you might want to check it out:
http://docs.oracle.com/javase/tutorial/extra/fullscreen/index.html