 <p><strong>For your <code>ImagePanel</code> class</strong></p> <ol> <li><code>super.paint[Component]</code> <em>before</em> all the other stuff. </li> <li>Don't override <code>paint</code> but instead <code>paintComponent</code></li> <li>Don't set properties in <code>paintComponent</code> method ie <code>setOpaque()</code>. Beside, <code>JPanel</code> is opaque by default</li> <li>Override <code>getPreferredSize()</code> for painting on panels </li> </ol> <p><strong>For loadng images</strong></p> <p>Make a habit of not reading images from the file system, unless the application is specific to <em>only</em> your machine.</p> <p>Instead read from the class path and make the image a resource by packaging it into the class path</p> <ol> <li><p>Change your file structure</p> <pre><code>ProjectRoot src images 3D.jpg </code></pre></li> <li><p>Read from class path. Use <code>ImageIO</code> to make sure your path is correct. If it's invalid, an exception will be thrown</p> <pre><code>URL url = getClass().getResource("/images/3D.jpg"); Image image = ImageIO.read(url); </code></pre></li> </ol> <p><strong>For Netbeans GUI Builder</strong></p> <p>You can set the label icon using the design tool</p> <ol> <li>Select your label from the navigator or the design view. </li> <li>Go to the properties window in the right and find the property <code>icon</code></li> <li>click the ellipses button to the right of the property and a dialog will appear.</li> <li>Find your image and select OK (make sure your image is in a package in the src)</li> </ol> <hr> <p>See <a href="http://stackoverflow.com/a/22146266/2587435">related</a> and <a href="http://stackoverflow.com/a/22214485/2587435">maybe related</a></p>