Instead of doing it by adding your background as a component behind the other components (which is messy), why don't you just override paintComponent and paint the background image in there?