Re: Help : ImageIcon constructor fails to load image
- From: AlecB <nobodyhere@xxxxxxxxxx>
- Date: Sun, 30 Oct 2005 23:20:58 +0100
Rhino wrote:
"AlecB" <nobodyhere@xxxxxxxxxx> wrote in message news:dk2qel$ras$1@xxxxxxxxxxxxxxxxxx
Hi,
I am attempting to familiarising myself with swing and have encountered a strange problem.
The problem is that when I attemp to instantiate an Imageicon with a relative filename. it fails.
e.g. - images/ - icon.gif - ImageLabelExample.class
I suspect its something simple. Can someone point out what I'm missing?
Thanks.
Code snippet ... (from www.oreilly.com/swing2)
This link produces a '404' error when I attempt to view the page. Perhaps the site is down temporarily?
...
public static main(String[] args){ JLabel[] labels = new JLabel[3]; labels[0] = makeLabel(JLabel.TOP, JLabel.LEFT); labels[1] = makeLabel(JLabel.TOP, JLabel.CENTER); labels[2] = makeLabel(JLabel.TOP, JLabel.RIGHT); // disable label 0 labels[0].setEnabled(false); // Fails to find the image, the image is in the .jar file //labels[1].setDisabledIcon(new ImageIcon("images/icon.gif")); // This works labels[1].setDisabledIcon(creatImageIcon("images/icon.gif",null)); for(int i = 0; i < labels.length; i++) c.add(labels[i]); frame.setSize(350, 350); frame.setVisible(true); }
protected static JLabel makeLabel(int vert, int horiz) { JLabel l = new JLabel("Smile", icon, SwingConstants.CENTER); l.setVerticalTextPosition(vert); l.setHorizontalTextPosition(horiz); l.setBorder(BorderFactory.createLineBorder(Color.black)); return l; }
// If I create the ImageIcon here, all is well protected static ImageIcon createImageIcon(final String path, String description) { java.net.URL imgURL = ImageLabelExample.class.getResource(path); System.err.println( imgURL ); if (imgURL != null) { return new ImageIcon(imgURL, description); } else { System.err.println("Couldn't find file: " + path); return null; } }
Basically, the technique for getting an image out of a file in the filesystem is slightly different than the technique for getting a jar entry out of a jar in the classpath.
The code in your 'createImageIcon()' method is correct for getting a jar entry out of a jar in the classpath. If your image is indeed in a jar on the classpath, then you have nothing further to do.
However, if you want to get your image from a relative location within your local filesystem, you need to do things just a little differently, something like this (untested!):
String fileLocation = "images/icon.gif"; //location of file expressed as a String File imageFile = new File(fileLocation); //create a File reference to that location URL imageFileUrl = imageFile.toUR(); //create a URL pointing to the file labels[1].setDisabledIcon(new ImageIcon(imageFileUrl)); //get the image from its URL
Rhino
Oops,
That link should be http://www.oreilly.com/catalog/jswing2/ The source can be found in the chapter 4 bit of the code examples.
Of course this mechanism for creating imageicons is used throughtout the book, so I thought wisest to clarify.
Thanks. .
- References:
- Help : ImageIcon constructor fails to load image
- From: AlecB
- Re: Help : ImageIcon constructor fails to load image
- From: Rhino
- Help : ImageIcon constructor fails to load image
- Prev by Date: Re: help please
- Next by Date: Re: Crazy Clock
- Previous by thread: Re: Help : ImageIcon constructor fails to load image
- Next by thread: thanks guys
- Index(es):
Relevant Pages
|