画像を表示する

まずは、画像を用意します。

hoseki.jpg

iconフォルダを作成してその中に画像を保存してください。

まずプログラムを作成してから説明したいと思います。
以下の様なプログラムを作成してください

サンプルプログラム(AppletSample16.java)

//java.appletパッケージをimport宣言
//Graphicsクラスはawtパッケージに属しているのでawtパッケージもimport宣言

import java.applet.*; import java.awt.*; //Appletクラスを継承 public class AppletSample16 extends Applet{
//画像を格納するための変数を用意します。
Image img; //はじめに一度だけ実行するメソッド public void init(){ //Imageクラス型変数に画像データを入れる img = getImage(getDocumentBase(),"icon/hoseki.jpg"); } public void paint(Graphics g){ //画像を描く
g.drawImage(img,10,10,this);
} }

プログラムをコピーする場合すべて選択をクリックしてください。

HTMLの作成(AppletSample16.html)

<html>
  <head>
      <title>アプレット16</title>
</head>
<body>

<h1>画像を描く</h1> <applet code="AppletSample16.class" width="150" height="100"></applet> </body> </html>

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル後にアプレットビューアーを起動してみます。
以下のようになります。

ではプログラムの説明をします。
今回は初めて登場するメソッドがあります。
init()メソッドです。
init()メソッドはAppletクラスに属しています。
使用するときはinit()メソッドをオーバーライドします。

init()メソッドはJavaアプレットが実行されたときに一番最初に一度だけ呼び出されます。

今まで作成したアプレットもAppletクラスから継承したinit()メソッドが呼び出されていました。
しかし、Appletクラスのinit()メソッドは何も定義されていないので、何も起こらなかったのです。
ここでは、最初AppletクラスのgetImage()メソッドを呼び出して、画像ファイルを読み込んでおく作業をしています。

paintメソッド

paint()メソッドは描画だけに専念した処理を行うメソッドです。
つまり、アプレット領域を描画する必要が生じると、そのつど呼び出されます。

たとえば、アプレットを始めて表示したときやWWWブラウザがリサイズされたとき、
他のウインドウの 下に隠れたとき、移動したとき、最小化したとき、最大化したときなどです。

imageファイルを格納する変数を作成しています。
それが、 image img; です。

init()メソッド内の処理ですが、Imageクラスのインスタンスを作成しています。
画像を読み込むにはAppletクラスのgetImage()メソッドを使います。
引数には画像ファイルのあるディレクトリのURL,または画像ファイル名です。
ここでは、引数にはgetDocumentBase()を使用しています。
このメソッドは アプレットが組み込まれているドキュメントのディレクトリを命名する絶対 URL を返します。
難しい言い回しをしていますが、早い話HTMLファイルと同じディレクトリーに画像ファイルがある場合は
getDocumentBase()と指定してやればいいのです。

なぜ、init()メソッド内に記述したかですが、それは画像の読み込みは描画のたびにやる必要がなく 最初に一度だけやっておけばいいので書きます。
逆に描画のたびに画像を読み込むと描画完了まで時間がかかります。
次にpaintメソッドの中の処理ですが、まず画像を表示するにはdrawImageメソッドを使います。
引数はdrawImage(Imageオブジェクト,左上X座標,左上Y座標,ImageObserverオブジェクト)です。
ここで、ImageObserverオブジェクトとありますが、画像読み込みに関する結果を受け取るオブジェクト のことですが基本的には、自分自身を表すthisを指定しておけばいいでしょう。
ページのトップへ戻る