ImageIcon vs BufferedImage

I am still struggling with the best way of using images in Java Game design.

Do you use ImageIcon or BufferedImage? Or Both? Don’t mix AWT and SWING is the golden rule I have found. ImageIcon is in the SWING library and BufferedImage is in AWT.
When every resource, whether it be new/old/magazine/book/article uses one or the other, it’s very hard to figure out what is the “proper” course of action.

I have many resources and have performed a lot of searches:
Killer Game Programming in Java by Andrew Davison, which is outdated but still useful
thenewboston’s tuts: http://www.youtube.com/watch?v=hBhAWTSu104&list=ECA331A6709F40B79D
realtutsGML’s tuts: http://www.youtube.com/watch?v=hXImR8Wm53M
the java docs ofc
lots of other articles

Use BufferedImage.

Or, if you are serious about Java Game Development, use some sort of gaming library that uses OpenGL for rendering images(LWJGL, JMonkey, Sick2D, LibGDX to name a few).

Not mixing Swing and AWT usually refers to GUI components. If you want to do any graphics at all, you’re going to have to use AWT for painting. But for user interface (button, window, menu, etc) use Swing or JavaFX.

Even if I use an ImageIcon in a Swing app, I tend to construct it from a BufferedImage anyway just to have consistent “ImageIO-proof” images anywhere in my application.

http://docs.oracle.com/javase/7/docs/api/javax/swing/ImageIcon.html#ImageIcon(java.awt.Image)

But if I create a Swing application it tends to be a tool for game development purposes and it will likely do image manipulation things anyway.

Thanks for the replies. I learned Libgdx, but was trying to do some design a little closer to the native Java libraries.

Why? TableLayout is so much better ;D