So it seems you are very experienced.
Then try out either
LWJGL or
JogAmp.
Both being a wrapper for opengl, and both giving you the ability to do VSync.
Which one is better? I don't want to start the thousandth flamewar, so here I try to be objective:
LWJGL is pretty much based on static stuff. Princec says that this would make more sense, since OpenGL is written "static" too.
The windowing system is also static and very very easy. So you only have to say "Display.create()" and initialize some gl stuff (which you could leave out, but you better don't) and you're ready to draw stuff. Then call "Display.update()", and if you want you can use "Display.setVSyncEnabled(true);" so you have vsyncing when you call "Display.update()".
One big contra: You can't have two Displays in lwjgl, since its pretty much static stuff.
Summed up: LWJGL is very very very easy to use and learn, you could copy code directly from C to Java and it would almost work. It gives you only one window, but this shouldn't be the problem for a game.
JogAmp consists of "JOGL" (openGL stuff), "JOAL" (openAL stuff) "JOCL" (openCL stuff) and propably some more I don't know of, but these are the most important. (LWJGL gives OpenGL, OpenCL and OpenAL wrappes as well)
JogAmp is more Object.oriented, which means you can instantiate "GL" or "GL2" or whatever and use it for doing OpenGL stuff.
It allows you to have multiple windows and already gives you a pretty good GameLoop / Rendering loop. It as also allows you VSyncing.
You can use AWT or NEWT (their own windowing toolkit) to create windows and render with OpenGL.
And it gives you some little helpful helper-classes, like a wrapper around the Framebuffer api, called "Framebuffer"...
And more of the above example.
I hope I didn't miss a point.