在Image没有被完全下载完时,int imageWidth=image.getWidth(this);
和 int imageHeight=image.getHeight(this);返回 -1 ,所以你后来的for循环成为死循环,paint方法永远不退出。
和 int imageHeight=image.getHeight(this);返回 -1 ,所以你后来的for循环成为死循环,paint方法永远不退出。
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方法呢?对这个情况网友们有什么好的解释吗?请各位网友指教!谢谢了!