1

私は次の変数を持っています:Image avatar;そしてURL url;

コンストラクターで、次のように設定しました。

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);

それとも代わりにすnullべきですか?this

4

4 に答える 4

3

4 番目の引数はオブザーバーで、画像がさらに変換されると通知されるオブジェクトです。Image パラメーターを非同期で取得する場合にのみ実際に役立つと仮定すると、完全に null にすることができます。

于 2012-05-11T16:58:21.923 に答える
2

他の 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)

4 番目の引数は単なるイメージ オブザーバーであり、これはobject to be notified as more of the image is converted.null であっても問題ありません。

于 2012-05-11T16:59:55.573 に答える
0

Image(ファイル システムからではなく、プログラムによって構築された) ネットワーク経由で読み込みを行っていて、読み込みを明示的に待機していない場合は、 を使用ImageObserverして を完全に描画するようにする必要がありますImage。それ以外は、null を使用してください。大丈夫です。

于 2016-07-29T15:06:37.960 に答える