title: How to make JFrame background and JPanel transparent with only image showing
body: <p>Hey I am trying to make a some kind of launcher and the "window" must be transparent because I want the image I am using to be the design of it if you understand what I mean. I tried to do <code>setUndecorated(true);</code> and <code>setBackground(new Color(0, 0, 0, 0));</code> but it just looked weird. Here is a picture on how it looks: <a href="http://prntscr.com/2pqohq" rel="noreferrer">http://prntscr.com/2pqohq</a> Here is my code:</p>
  
  <pre><code>import java.awt.Color;
  import java.awt.Dimension;
  import java.awt.Graphics;
  import java.awt.GridBagLayout;
  import java.awt.image.BufferedImage;
  import java.io.File;
  import java.io.IOException;
  import java.net.MalformedURLException;
  import java.util.logging.Level;
  import java.util.logging.Logger;
  
  import javax.imageio.ImageIO;
  import javax.swing.JFrame;
  import javax.swing.JPanel;
  import javax.swing.SwingUtilities;
  
  /**
   * 
   * Our Launcher for the client
   * 
   * @author Daniel &lt;Skype: daniel.gusdal&gt;
   *
   * Current Date: 5. feb. 2014 Current Time: 14:29:54
   * Project: 742 client. File Name: Launcher.java
   *
   */
  public class Launcher2 {
  
      public Launcher2() {
          JFrame frame = new JFrame();
          frame.getContentPane().add(new ImagePanel());
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          //frame.pack(); //had to remove, got an error from it... 
          frame.setUndecorated(true); //transparent
          frame.setBackground(new Color(0, 0, 0, 0)); //transparent
          frame.setVisible(true);
          frame.setSize(1080, 550);
      }
  
      public static void main(String[] args) {
          SwingUtilities.invokeLater(new Runnable(){
              public void run() {
                  new Launcher2();
              }
          });
      }
  
      @SuppressWarnings("serial")
      public class ImagePanel extends JPanel {
  
          BufferedImage img;
  
          public ImagePanel() {
              setLayout(new GridBagLayout());
              try {
                  img = ImageIO.read(new File("C:/Users/Daniel/Pictures/Launcher3.png/"));
              } catch (MalformedURLException ex) {
                  Logger.getLogger(Launcher2.class.getName()).log(Level.SEVERE, null, ex);
              } catch (IOException ex) {
                  Logger.getLogger(Launcher2.class.getName()).log(Level.SEVERE, null, ex);
              }
  
          }
  
          /**
           * Draws the image and sets the image dimension
           */
          @Override
          protected void paintComponent(Graphics g) {
              super.paintComponent(g);
              //g.drawImage(img, 100, 100, 1080, 550, this);
              g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
          }
  
          /**
           * Sets the JPanel dimension
           */
          public Dimension getPreferredSize() {
              return new Dimension(1080, 550); 
          }
      }
  }
  </code></pre>