Trouble getting started

You could start with the LWJGL Basics tutorial series found here. The current 4 parts should get you to Pong level in a simple and concise manner.

Thereafter I recommend you jump to Slick2D, its the best 2d java games library at the moment and is probably the most well documented (see its wiki) not to forget its really helpful community.

Going down the Swing/Java2D/AWT road eventually leads to a dead end as those libraries just aren’t designed for games.

I’m guessing your speed difference is because you used to be adjusting the paddle’s position from within keyPressed, and now you’re doing it within your game loop. Your game loop appears to fire every 20ms - the EDT (Event Dispatch Thread, which is what calls keyPressed etc.) must be firing less often than that. To get something similar, you can increase the length of your Thread.sleep(), or you can just move your paddle by less distance every time, which is what I would recommend because a 20ms delay is already only 50fps.

The difference between the booleans and the way you were doing it before is that the OS will only fire an event for the most recent key. Because you’re storing every key you’ve ever seen, you get to jump over this hurdle by remembering what was pressed independently of the OS.

Really? I don’t really see how this can be true. It’s best to avoid as much as possible Swing/AWT but Java2D is good enough.

Given that Java2D has improved in the last few releases but its still factors slower then what the OpenGL bindings can do and pretty much impossible to pull of a modern looking game with it. Also don’t forget about input and sound which are also pretty important for games.

Because of lighting? or something else?