javax.swing.ImageIcon is used for images, both to use on buttons and labels, and to draw in a graphics panel. The supported formats are .gif, .jpg, and .png.
java.net.URL where = new URL("http://www.yahoo.com/logo.jpeg"); ImageIcon anotherIcon = new ImageIcon(where);
A filename in an ImageIcon constructor specifies the filename relative to the location of the class file. This constructor doesn't return until the ImageIcon is completely loaded.
Warning: Just putting the file name or path in the ImageIcon constructor won't work in general for applets or executable jar files. See below.
ImageIcon myIcon = new ImageIcon("images/myPic.gif");
Warning: Just putting the file name or path in the ImageIcon constructor won't work in general for applets, WebStart applications, and executable jar files. See below.
Let's say you have a directory (cards) of images (cards/ad.gif, ...). And let's assume your program is in a package called cardplayer, and you're trying to load the image within the class Card.
ClassLoader cldr = this.getClass().getClassLoader(); java.net.URL imageURL = cldr.getResource("cardplayer/cards/ad.gif"); ImageIcon aceOfDiamonds = new ImageIcon(imageURL);
ImageIcon leftArrow = new ImageIcon("leftarrow.gif"); JButton left = new JButton(leftArrow);
An ImageIcon, img, can be drawn on components (usually a JPanel) using
img.paintIcon(Component c, Graphics g, int x, int y);
Display the image on
a subclass of JPanel used for graphics. Put the paintIcon
call in the paintComponent
method of that panel.
To paint the ImageIcon img
on the current panel
(ie, this
), use a call like:
public void paintComponent(Graphics g) { super.paintComponent(g); img.paintIcon(this, g, 100, 100); }
You can find the width and height of an image with
int w = img.getIconWidth(); int h = img.getIconHeight();