簡単なアプレット

次は Java の特徴のひとつであるアプレットの例を紹介する。やはり "Hello, world" を表示するアプレットの例である。

import java.applet.*;
import java.awt.*;

public class HelloApplet extends Applet {
    public void paint(Graphics g) {
        g.drawString("Hello, world", 5, 25);
    }
}

実行

上のようなコードを書いたファイル HelloApplet.java を作り、コン パイルする。

% javac HelloApplication.java

すると、クラスファイル HelloApplet.class が作られる。

次のようなファイル helloapplet.html を作る。

<HTML>
<HEAD>
<TITLE>Demo of HelloApplet</TITLE>
</HEAD>

<BODY>
<P>Here is the output of my applet:
<APPLET code="HelloApplet.class" width=100 height=25>
</APPLET>
</P>
</BODY>
</HTML>

ブラウザで helloapplet.html を表示させると、Here is the output of my applet: の後に Hello, world と表示される。

実行結果(実演):
Here is the output of my applet: Hello, world

コードの解説

まず、最初に import という文があるが、これは Java のクラ スをパッケージ名を書かずに参照するための宣言である(ここでは、 java.applet.Applet クラスと java.awt.Graphics クラス)。C 言語の include と似ているが、実際にはだいぶ異な る。

次に、HelloApplet というクラスを定義している。このクラス は、Applet クラスを継承している。アプレットは必ず Applet クラスを継承しなければならない。継承というのは、既存 のクラスの処理を少しの変更で再利用するためのものである。…と多くの入門書 には書いてあるが、これには少し語弊がある。どんなクラスでも継承を使って再 利用できる(or すべき)わけではない。あらかじめ継承して使うように作 られたクラスを再利用するためには、継承を使う、というのが正しい。こ こで言えば、Applet クラスはアプレットを作るために、継承して 使うように作られたクラスなので、HelloApplet クラスでは Applet クラスを継承して使っている。

HelloApplet クラスの中では、paint というメ ソッドを定義している。これは継承の親の Applet クラス(実は もっと親の階層の Container クラス)で定義されているメソッド で、それを上書きしているのだが、そんなことはあまり本質的ではない。とにか く、Applet クラスを継承したクラスで paint(Graphics g) メソッドを定義すると、アプレットが描 画されるときにこのメソッドが呼ばれるので、描画処理はこの中に書く。そうやっ て使うように Applet クラスは作られているのである。

paint メソッドの中では引数で渡された Graphics クラスのオブジェクトに対して、 drawString メソッドを呼んで、"Hello, world" と いう文字列を描画している。Graphics クラスは、いわゆる「グラ フィックスコンテキスト」というもので、描画を行なうための方法を抽象化した クラスである。