Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Java by (13.1k points)

Can anyone help me how I can able to add background picture using JPanel. I tried with the below code, but it throws an error:

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class imagebut extends JFrame

{

public static void main(String args [])

{

    imagebut w = new imagebut();

    w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    w.setSize(300,300);

    w.setVisible(true);

}

public imagebut()

{   

    setLayout(null); // :-)

    PicPanel mainPanel = new PicPanel("picturename.jpg");

    mainPanel.setBounds(0,0,500,500);

    add(mainPanel);

}

class PicPanel extends JPanel{

    private BufferedImage image;

    private int w,h;

    public PicPanel(String fname){

        //reads the image

        try {

            image = ImageIO.read(new File(fname));

            w = image.getWidth();

            h = image.getHeight();

        } catch (IOException ioe) {

            System.out.println("Could not read in the pic");

            //System.exit(0);

        }

    }

    public Dimension getPreferredSize() {

        return new Dimension(w,h);

    }

    //this will draw the image

    public void paintComponent(Graphics g){

        super.paintComponent(g);

        g.drawImage(image,0,0,this);

    }

}

}

Any help would be appreciated.

1 Answer

0 votes
by (26.7k points)

You can use the below code as a reference, which will help you to add a background picture in JPanel successfully:

import java.awt.*;

import javax.imageio.ImageIO;

import javax.swing.*;

import java.awt.event.*;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class imagebut extends JFrame

{

public static void main(String args [])

{

imagebut w = new imagebut();

w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

w.setSize(300,300);

w.setVisible(true);

}

 public imagebut()

{   

setLayout(null); // :-)

PicPanel mainPanel = new PicPanel("picturename.jpg");

mainPanel.setBounds(0,0,500,500);

add(mainPanel);

  }

 class PicPanel extends JPanel{

private BufferedImage image;

private int w,h;

public PicPanel(String fname){

    //reads the image

    try {

        image = ImageIO.read(getClass().getResource(fname));

        w = image.getWidth();

        h = image.getHeight();

    } catch (IOException ioe) {

        System.out.println("Could not read in the pic");

        //System.exit(0);

    }

}

public Dimension getPreferredSize() {

    return new Dimension(w,h);

}

//this will draw the image

public void paintComponent(Graphics g){

    super.paintComponent(g);

    g.drawImage(image,0,0,this);

}

}

 }

I hope this will help.

Want to become a Java Expert? Join Java Certification now!!

Want to know more about Java? Watch this video on Java Course | Java Tutorial for Beginners | Java Training:

Related questions

0 votes
1 answer
asked Jul 31, 2019 in Java by Anvi (10.2k points)
0 votes
1 answer
0 votes
1 answer
asked Jul 10, 2019 in Java by Ritik (3.5k points)
0 votes
1 answer
0 votes
1 answer

Browse Categories

...