Oh Swing... it's a pretty good choice, but boy can it get messy. Very messy. However it's probably one of the best choices for regular Java. The ability to use HTML and CSS inside the elements can help a lot too, depending on what you are doing. As Deque mentioned, JavaFX is another route but I'm not super familiar with it, so I won't pretend I am.
If you want to get something really nice looking and have lots of time, I suggest looking into some of the OpenGL GUI libraries. One of the most common is Nifty. Get an OpenGL binding (LWJGL or JOGL), give yourself plenty of time, and you can get a verrrry nice looking GUI going. The cool thing about this is that you can deploy it to Android (or IOS if you look into using LibGDX's RoboVM) very easily.