Just to clarify:
Swing is built on AWT: meaning that Swing uses Graphics2D to draw the buttons, list, labels, drop downs, etc....
AWT/Java2D is a very, very
high level and powerful API that is excellent for simple games to experiment with its many tools. Its only drawback is its speed, very slow compared to OpenGL.
OpenGL is a relatively low-level API that allows you to directly access the graphics card! This means that you don't get methods that draw circles and images and rectangles. Graphics cards only know how to do 2 things: rendering triangles and texturing them and those two things it is damn good at doing. Your code may look messy but that's because it takes many more lines of code to draw an image to the screen because you first need to upload the image data to a texture, bind the texture, specify the vertices of a quad, and render the quad.
Slick2D eases your life by presenting a Java2D-like API using OpenGL underneath. It handles all that boiler plate code to draw simple images and shapes to make your code neat. However, since it is uses OpenGL immediate mode (part of the old "classic" API that is now all deprecated, you will (and should) learn about this later when you study OpenGL), it is still relatively slower than the full power of OpenGL. And by "relatively slow" I mean at least 50-100x faster than Java2D