I'm working on building a board game in Java. For the game board itself I was trying to place the image of the board as the background of the entire JPanel, which fills the JFrame. I found a way to do this, but only with the file stored locally, it needs to be able to take the image from the package the GUI is inside as well.
package Gui;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
//Proof of concept for setting an image as background of JPanel
public class JBackgroundPanel extends JPanel {
    private BufferedImage img;
    public JBackgroundPanel() {
        // load the background image
        try {
            img = ImageIO.read(new File(
                    "C:\\Users\\Matthew\\Desktop\\5x5     Grid.jpg"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        // paint the background image and scale it to fill the entire space
        g.drawImage(img, 0, 0, getWidth(), getHeight(), this);
    }
}
I've read that using ImageIcon is a good fix, but I don't know how to use it properly.
Edit 1 - I found my answer here http://www.coderanch.com/how-to/java/BackgroundImageOnJPanel I also had the picture formatted wrong in my workspace. Thanks for the help
getClass().getResource("/path/to/resource") to obtain a URL reference to the resource, which can be used by ImageIO to read the resourceSo, for example, if the image was located in the /images folder inside your Jar, you could use
 ImageIO.read(getClass().getResource("/images/5x5    Grid.jpg"));
For example...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With