import java.awt.*; import java.net.URL; import javax.swing.*; /** displays an image in a panel. from Liang, pp 522-524 */ public class ImageViewer extends JPanel { /** hold value of property image */ private java.awt.Image image; private String imageFilename = ""; private boolean stretched = true; private int xCoordinate; private int yCoordinate; public ImageViewer() { } public ImageViewer(Image image) { this.image = image; repaint(); } /** creates an image icon from a local file name */ public static ImageIcon createImageIcon(String imageFilename, Object object) { URL url = object.getClass().getResource(imageFilename); return new ImageIcon(url); } /** create an image from a local file name */ public static Image createImage(String imageFilename, Object object) { ImageIcon imageIcon = createImageIcon(imageFilename, object); if (imageIcon != null) return imageIcon.getImage(); else return null; } /** create an image icon from an Internet URL string */ public static ImageIcon createImageIcon(String urlString) { return new ImageIcon(getURL(urlString)); } /** create an image from a URL string */ public static Image createImage(String urlString) { return new ImageIcon(getURL(urlString)).getImage(); } private static URL getURL(String urlString) { URL url = null; try { url = new URL(urlString); } catch (java.net.MalformedURLException ex) { ex.printStackTrace(); } return url; } protected void paintComponent(Graphics g) { super.paintComponent(g); if (image != null) if (isStretched()) g.drawImage(image, xCoordinate, yCoordinate, getSize().width, getSize().height, this); else g.drawImage(image, xCoordinate, yCoordinate, this); } /** return value of property image */ public java.awt.Image getImage() { return image; } /** set a new value for property image */ public void setImage(java.awt.Image image) { this.image = image; repaint(); } /** return value of property imagefilename */ public String getImageFilename() { return imageFilename; } /** set a new value for property imagefilename */ public void setImageFilename(String imageFilename) { this.imageFilename = imageFilename; image = createImage(imageFilename, this); repaint(); } /** return value of property stretched */ public boolean isStretched () { return stretched; } /** set a new value for property stretched */ public void setStretched(boolean stretched) { this.stretched = stretched; repaint(); } /** return value of property xCoordinate */ public int getXCoordinate() { return xCoordinate; } public int getYCoordinate() { return yCoordinate; } /** set a new value for property ycoordinate */ public void setYCoordinate(int yCoordinate) { this.yCoordinate = yCoordinate; repaint(); } }