GeeCON Prague 2014*
The moose likes Swing / AWT / SWT and the fly likes Background image not loading on JPanel Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Background image not loading on JPanel" Watch "Background image not loading on JPanel" New topic
Author

Background image not loading on JPanel

Hazem Hamam
Greenhorn

Joined: Apr 22, 2006
Posts: 8
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,
Michael Dunn
Ranch Hand

Joined: Jun 09, 2003
Posts: 4632
I copy/pasted your code, changed the .jpg to a file name in the same directory
compiled and ran the code - image appeared OK.

change to another .jpg and see how you go
Hazem Hamam
Greenhorn

Joined: Apr 22, 2006
Posts: 8
Hello again and Thx for the reply,

I tried changing 3 images with no luck, Used JPG the three times and the same problem. Do I need them to be at certain resoultion, extension or any other paramter for that matter to work?
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24187
    
  34

Moving to our Swing/AWT forum.


[Jess in Action][AskingGoodQuestions]
Michael Dunn
Ranch Hand

Joined: Jun 09, 2003
Posts: 4632
my earlier try was on winXP, java 1.5.0_05

just tried again, win98SE, 1.4.0_01, also worked OK

only requirement (for the posted code) is the .jpg file has to be in the same directory
 
GeeCON Prague 2014
 
subject: Background image not loading on JPanel