home *** CD-ROM | disk | FTP | other *** search
/ Programming with VisualAge for Java / IBMVJAVA.ISO / samples / imagecanvas.java < prev    next >
Encoding:
Java Source  |  1997-11-26  |  2.5 KB  |  117 lines

  1.  
  2. package ch13;
  3.  
  4. import java.awt.*;
  5. import java.io.*;
  6. /**
  7.  * This class was generated by a SmartGuide.
  8.  * 
  9.  */
  10. public class ImageCanvas extends Canvas implements Serializable {
  11.     private String image;
  12.     private Image img;
  13.     MediaTracker myTracker;
  14.  
  15. /**
  16.  * Flag constructor comment.
  17.  */
  18. public ImageCanvas() {
  19.     this("us_flag.gif");
  20. }
  21. /**
  22.  * This method was created by a SmartGuide.
  23.  * @param newImage java.lang.String
  24.  */
  25. public ImageCanvas (String newImage ) {
  26.     myTracker = new MediaTracker(this);
  27.     img = loadImage(newImage);
  28. }
  29. /**
  30.  * This method was created by a SmartGuide.
  31.  * @return java.lang.String
  32.  */
  33. public String getImage() {
  34.     return image;
  35. }
  36. /**
  37.  * This method was created by a SmartGuide.
  38.  * @return java.awt.Dimension
  39.  */
  40. public Dimension getPreferredSize() {
  41.       // Calculate the preferred size based on the label text
  42.     if (img != null) {
  43.         return new Dimension(img.getWidth(this), img.getHeight(this));
  44.     }
  45.     else {
  46.     //    System.out.println("Image not loaded!!!");
  47.         return new Dimension(10, 10);
  48.     }        
  49. }
  50. /**
  51.  * This method was created by a SmartGuide.
  52.  * @return java.awt.Image
  53.  * @param imageName java.lang.String
  54.  */
  55. private Image loadImage(String imageName) {
  56.      try {
  57.          java.net.URL imgUrl=this.getClass().getResource("//"+imageName);
  58.         img =  Toolkit.getDefaultToolkit().getImage(imgUrl);
  59.         myTracker.addImage(img, 0);
  60.         try {
  61.             myTracker.waitForID(0);
  62.         }
  63.         catch    (InterruptedException e) {
  64.             return null;
  65.         }
  66.         repaint();
  67.         sizeToFit();
  68.         return img;
  69.     }
  70.     catch (Exception e) {
  71.         System.out.println("Cannot load: " + imageName);
  72.         e.printStackTrace();
  73.         return null;
  74.     }
  75. }
  76. /**
  77.  * This method was created by a SmartGuide.
  78.  * @param g java.awt.Graphics
  79.  */
  80. public void paint(Graphics g) {
  81.     if ((myTracker.statusID(0, true) & MediaTracker.ERRORED) != 0) {
  82.         g.setColor(Color.red);
  83.         g.fillRect(0, 0, size().width, size().height);
  84.         return;
  85.     }
  86.     if ((myTracker.statusID(0, true) & MediaTracker.COMPLETE) != 0) {
  87.         g.drawImage(img, 0, 0, this);
  88.         sizeToFit();
  89.         }
  90.     else {
  91.         String str = new String("Loading...");
  92.         g.drawString(str, 0, 0);
  93.     }        
  94.     return;
  95. }
  96. /**
  97.  * This method was created by a SmartGuide.
  98.  * @param newImage java.awt.Image
  99.  */
  100. public void setImage(String newImage) {
  101.     img=loadImage(newImage);
  102.     return;
  103. }
  104. /**
  105.  * This method was created by a SmartGuide.
  106.  */
  107. private void sizeToFit() {
  108.     // Resize to the preferred size
  109.     Dimension d = getPreferredSize();
  110.     setSize(d.width, d.height);
  111.     Component p = getParent();
  112.     if (p != null) 
  113.     {
  114.         p.invalidate();
  115.     }
  116. }
  117. }