2012-05-11 40 views
1

我有以下變量:Image avatar;URL url;我應該爲Graphics.drawImage()函數的ImageObserver參數使用null嗎?

在構造函數中,我設置:

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

this.avatar = ImageIO.read(url); 

然後在..

public void paint (Graphics g) 

..使用以下內容是否正確?

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

還是應該nullthis呢?

+4

只是一個建議,如果你使用Swing,對於這樣一個任務,重寫[paintComponent(...)](http://java.sun)不要覆蓋你的'paint(...)'方法。 com/products/jfc/tsc/articles/painting /#swing)相反,兩者都可以,雖然它們是針對不同的事物,不知道那麼多細節,否則我會發布我的答案:-) –

回答

3

第四個參數是觀察者,當更多的圖像被轉換時要通知的對象。它可以完全爲空,假設這隻有在你異步獲取Image參數時纔有用。

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.所以它是罰款,它是零。

2

相較於其他兩個答覆,我建議,如果你有一個ImageObserver使用它並沒有推定爲圖像是否是同步加載(如ImageIO.read(URL)),異步加載(如Toolkit.createImage(URL))或產生在記憶中。

0

如果你在網絡上加載Image(而不是從文件系統,或通過程序構造),並沒有明確地等待加載,你需要使用一個ImageObserver,以確保完全繪製Image。除此之外 - 只需使用null。應該沒問題。

相關問題