1

I have the following variables: Image avatar; and URL url;

In the constructor, I set:

this.url = new URL("http://www.robottiger.com/user.PNG");

and

this.avatar = ImageIO.read(url);

Then in..

public void paint (Graphics g)

..is it correct to use the following?

g.drawImage(avatar, 20, 410, null);

Or should the null be this instead?

4

4 回答 4

3

第四个参数是观察者,当更多图像被转换时要通知的对象。它可以完全为空,假设只有在异步获取 Image 参数时它才真正有用。

于 2012-05-11T16:58:21.923 回答
2

与其他两个回复相比,我建议如果您有一个ImageObserver,请使用它,并且不要假设图像是同步加载(例如ImageIO.read(URL))、异步加载(例如Toolkit.createImage(URL))还是在内存中生成的。

于 2012-05-11T17:30:38.087 回答
2

您所指的构造函数drawImage()如下:

public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer)

第四个参数只是图像观察者,object to be notified as more of the image is converted.所以它可以为空。

于 2012-05-11T16:59:55.573 回答
0

如果您Image通过网络加载(不是从文件系统加载,也不是由程序构建)并且没有明确等待加载,则需要使用 anImageObserver来确保完全绘制Image. 除此之外 - 只需使用 null。应该没问题。

于 2016-07-29T15:06:37.960 回答