ImageObserver の機能の実装

ImageObserver はイメージの状態を監視し、イメージからの通知を受け取る 働きです。このインターフェイスは Component クラスにインプリメントされ、 Component のサブクラスである Appletも ImageObserver の機能を継承します。
ImageObserver インターフェイスには、 イメージに変更が生じた場合に通知を受けて呼び出されるべき処理 を定義するための imageUpdate() メソッドと 8個の独立したビット値に割り振られた static定数が定義されています。 static変数はイメージの読み込みの状況を意味するものです。 (後の例で示すように、ビットのマスクとしてプログラム中で用います。)

WIDTH 横幅のサイズが確定した(サイズの値ではない)。
HEIGHT 高さのサイズが確定した(サイズの値ではない)。
PROPERTIES イメージのプロパティの情報を読み込んだ。
SOMEBITS イメージを途中まで読み込んだ状態。
FRAMEBITS いったんイメージを描いた後、まだ別のデータを読み込んでいる状態。
ALLBITS 全データ読み込み完了。(全部のビットが立っているという意味ではない。)
ABORT 読み込み途中の途中で処理が放棄された状態。
ERROR エラー。イメージの元になるべきファイルが存在しない場合は、この値が返る。

アプレット(そのスーパークラスの Component )では、 imageUpdate() メソッドは、そのつど update() メソッドを呼び出すように 定義されています。 このデフォルトの設定では、イメージの読み込み途中でも表示が実行されます。 imageUpdate()には引数の1つとしてイメージの読み込み状況を記憶した int型の 変数が渡されます。その値に応じて処理を分けることが可能です。 また、イメージの読み込み状況を知るだけならば、checkImage()メソッドを用いる こともできます。このメソッドの返値が、イメージの読み込み状況を表す int型の 数値です。情報を取り出すためにはビットのマスクを使う必要があります。


int state = checkImage( image, this );
if( (state & ERROR) == ERROR ) {
                    :
                    :