OK, I think you've tried your best enough.

Kung ako sa iyo, ganito ang approach ko (kung sakaling 5 minutes lang ang ibibigay sa akin para gawin)
- pinag hiwalay ko yung dalawang classes para makita mo ng malinaw
- MainApp.java is the main app.
- JPanelBackground.java ay taga gawa lang ng panel na may parameter na image
check snapshots below.
***Take notes
1) use RELATIVE file directory pag nagse-save ka ng images. Relative path or relative package. Huwag mong isasama ang path ng hard drive mo.
2) sa MainApp, ginawa ko "setOpaque(false)" yung nasa nasa ibabaw na panel ("panel2). This is the key para makita yung nasa ilalim na panel na may background.
3) tignan mo yung layout ng code.... naka indent para madaling masundan
4) yung pag construct ko ng component, you can use your style para madaling maglagay ng events listener later.
Goodluck, again!