在Image没有被完全下载完时,int imageWidth=image.getWidth(this);
和 int imageHeight=image.getHeight(this);返回 -1 ,所以你后来的for循环成为死循环,paint方法永远不退出。

解决方案 »

  1.   

    快接近结帐了哦!但是我还有点不懂,请看以下这段程序:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    class ImagePanel extends JPanel
    {
          public ImagePanel()
          {
                 String fileName="BULLET2.gif";
                 image=Toolkit.getDefaultToolkit().getImage(fileName);
                 /*
                 MediaTracker tk=new MediaTracker(this);
                 tk.addImage(image,0);
                 try
                 {
                    tk.waitForID(0);
                 }
                 catch(InterruptedException e)
                 {
                 }
                 */
          }
          public void paintComponent(Graphics g)
          {
                 Dimension d=getSize();
                 int clientWidth=d.width;
                 int clientHeight=d.height;
                 int imageWidth=image.getWidth(this);
                 int imageHeight=image.getHeight(this);
                 g.drawImage(image,0,0,this);
          }
          private Image image;
    }
    在这里我还是把跟踪图象的代码注释掉了,这时getWidth和getHeight方法还是返回的-1呀!为什么这里DrawImage能成功并且能正确的退出paint方法呢?对这个情况网友们有什么好的解释吗?请各位网友指教!谢谢了!