在构造函数中:
public MyCanvas() //extends Canvas
{
 image [0]   =   Toolkit.getDefaultToolkit().getImage("image0.jpg");
  MediaTracker   mt   =   new   MediaTracker(this);   
  mt.addImage(image[0],   0);   
  try
  {
  mt.waitForAll();
  }
  catch(InterruptedException e)
  {
      System.out.println(e);    
  }
 System.out.println(image[0]);
 System.out.println(image[0].getWidth(this) + "\n" + image[0].getHeight(this));
}
public void paint(Graphics g)
    {
       dflag = g2d.drawImage(image[0], 0, 0, this);
       System.out.println(dflag);
   }sun.awt.image.ToolkitImage@1ac04e8    //这里不是表示图片加载成功了吗???
-1                                    //得不到图片的宽和高
-1
false                                 //drawImage返回false且画不出图片, 怎么回事?
false
false
false
……

解决方案 »

  1.   

    出现这种情况,是因为图片没有被成功获取。
    Toolkit.getDefaultToolkit().getImage("image0.jpg"); //这个语句你将图片名称改为,图片的绝对路径试试,如:C:/image0.jpg。这里没有获取的图片但是返回Image对象的原因是:getImage("image0.jpg")其实是找不到图片的,但是仍然反回Image对象,是因为,Image接口定义中包含有这层含义,Image不仅包括图象信息,还包括加载图象所使用的资源信息,像Image.flush(),可在对象创建后,且原图文件被修改后重新加载当前的Image对象。所以,此时返回的Image没有图片信息,但是有创建图片的资源信息,如指定的路径"image0.jpg"。所以,Image对象一样被创建,以便日后重新加载。
      

  2.   


    改成绝对路径也不得啊!!!sun.awt.image.ToolkitImage@765291
    -1
    -1
    false
    false
    false
    false
    false
    false
    ……
      

  3.   

    让我换张图片draw draw试试先