How to add an image to a JPanel? How to add an image to a JPanel? java java

How to add an image to a JPanel?


If you are using JPanels, then are probably working with Swing. Try this:

BufferedImage myPicture = ImageIO.read(new File("path-to-file"));JLabel picLabel = new JLabel(new ImageIcon(myPicture));add(picLabel);

The image is now a swing component. It becomes subject to layout conditions like any other component.


Here's how I do it (with a little more info on how to load an image):

import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.logging.Level;import java.util.logging.Logger;import javax.imageio.ImageIO;import javax.swing.JPanel;public class ImagePanel extends JPanel{    private BufferedImage image;    public ImagePanel() {       try {                          image = ImageIO.read(new File("image name and path"));       } catch (IOException ex) {            // handle exception...       }    }    @Override    protected void paintComponent(Graphics g) {        super.paintComponent(g);        g.drawImage(image, 0, 0, this); // see javadoc for more info on the parameters                }}


Fred Haslam's way works fine. I had trouble with the filepath though, since I want to reference an image within my jar. To do this, I used:

BufferedImage wPic = ImageIO.read(this.getClass().getResource("snow.png"));JLabel wIcon = new JLabel(new ImageIcon(wPic));

Since I only have a finite number (about 10) images that I need to load using this method, it works quite well. It gets file without having to have the correct relative filepath.