Might be the easiest question there is but I tried
alot of things and it didnt work. I am trying to paint a background picture on a JPanel. After many tries and failures on my own, I found the following example code on the web which many said is working fine:
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class BackgroundImage extends JFrame
{
JScrollPane scrollPane;
ImageIcon icon;
Image image;
public BackgroundImage()
{
icon = new ImageIcon("???.jpg");
JPanel panel = new JPanel()
{
protected void paintComponent(Graphics g)
{
// Dispaly image at at full size
g.drawImage(icon.getImage(), 0, 0, null);
// Scale image to size of component
//Dimension d = getSize();
//g.drawImage(icon.getImage(), 0, 0, d.width, d.height, null);
// Fix the image position in the scroll pane
//Point p = scrollPane.getViewport().getViewPosition();
//g.drawImage(icon.getImage(), p.x, p.y, null);
super.paintComponent(g);
}
};
panel.setOpaque( false );
panel.setPreferredSize( new Dimension(400, 400) );
scrollPane = new JScrollPane( panel );
getContentPane().add( scrollPane );
JButton button = new JButton( "Hello" );
panel.add( button );
}
public static void main(
String [] args)
{
BackgroundImage frame = new BackgroundImage();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocationRelativeTo( null );
frame.setVisible(true);
}
}
I am supposed to switch the ???.jpg with the name of the image I am trying to use and I did. I am still getting a JPanel with the button but no background. I placed the image in the root of the package, and in the same package as is the JFrame class am using to display the JPanel. Still no luck.
It might be related to my class not finding the image or not able to read it or something I don't know and am out of ideas. Any help is greatly appreciated
Hazem,