appletとしてもapplicationとしても 実行できるprogramを作ることも可能です。
applet の最後の let は「小さい」という 意味の接尾辞ですので, アプレットとは「小さなアプリケーション」というほどの意味でしょう。
上のような黄色い円を一つ描くアプレットを作ってみましょう。
editorを起動して,次のように打ち込んでください。
import java.awt.*; public class Applet1 extends java.applet.Applet { public void paint(Graphics g) { g.setColor(Color.yellow); g.fillOval(140, 40, 20, 20); } }
これを Applet1.java というファイル名で保存し, アプリケーションの場合と同様に
javac Applet1.javaと打ち込んでコンパイルすると, Applet1.class というファイルができます。
このファイル名は必ずクラス名(上の場合は Applet1) に .java を付けたものでなければなりません。 アプレットは class の宣言に必ず public と いう指定を付けなければならないのですが, public なクラスを含むプログラム名は必ずクラス名 に .java を付けたものでなければならないのです。 public ということばの意味は後で詳しく説明します。
この Applet1.class をHTMLファイルと同じディレクトリに置いて, HTMLファイルに
<applet code="Applet1.class" width=300 height=100> </applet>と書いておけば, Netscape Navigator のような Java対応 browser や appletviewerで上記のprogramを見ることができます。 appletviewer の使い方は
appletviewer test.htmlです。
ただし appletviewer は HTML file 中の <APPLET> tag だけしか 理解できません。 HTML fileの他の部分は Netscape などで確認します。
なお,<APPLET> tag の部分を
<applet code="Applet1.class" width=300 height=100> <img src="foo.gif"> </applet>のように書いておけば,Java に対応していないbrowserでは foo.gif という 画像が applet の代わりに表示されます。
以下ではこのappletについて説明します。
このプログラム中には,Graphics とか Color とか いう言葉が使われていますが,
import java.awt.*;です。
なお,この java.awt とは, Java言語の開発キット(JDK)に 入っているJava API(Application Programming Interface) と呼ばれる標準ライブラリの中のAWT(Abstract Window Toolkit)という パッケージのことです。 この中のものは appletで必ずといっていいほど使いますので, applet program の先頭では盲目的に
import java.awt.*;と書くものだと思ってしまってもよいでしょう。 実際には java.awt を使わなくても, 書いておいて実害はないでしょう。
プログラムの2行目の
public class Applet1 extends java.applet.Applet {の public とは,この Applet1 という class を 公開する(すべての method から利用可能にする) という意味です。
appletは,Java APIの中の java.applet.Applet という classを拡張(extend)することによって作ります。 「applet とはどういう働きをするか」という, いわば defaultの設定(無指定時の標準設定)が, java.applet.Applet というクラスの中に書き込まれています。 これがJavaのようなオブジェクト指向言語の一つの特長で, 元になるものを拡張して program を作っていきます。
applet を作るときには,
import java.awt.*; public class アプレット名 extends java.applet.Applet { ... }と書くのが決まり文句であると心得ておけばいいでしょう。
なお,java.applet.Applet という正式名も, 冒頭に import 命令を置くことによって省略名が使えます。 つまり,
import java.awt.*; import java.applet.*; public class アプレット名 extends Applet { ... }と書くことができます。import はいくつあってもかまいませんし, 並べ方の順序もどれを先にしてもかまいませんが, import 以外の命令よりは先に書きます。
appletの定義の中の,paint methodを定義している部分
public void paint(Graphics g) { ... }を見てみましょう。
これも public で始まっています。これも, paint method が誰にでも使ってもらえるようにするためです。
application の場合は,program の中に必ず main method がなければなりませんでした。 applet の paint method も,これとほぼ同様なものです。 applet に必ず paint method がなければならないわけでは ありませんが,特別な事情がない限り paint があるのが普通です。
applet の
public void paint(Graphics g) { ... }と、application の
public static void main(String args[]) { ... }を比べると,main の場合は static という形容詞が 付いています。 static は、compile した時点でこの method を作ってしまう ことを意味する言葉です。main が program で最初に実行される ものであるため、static 宣言する必要があります。
appletの paint に static が付いていないのは, これが本当に applet で最初に実行されるものではないためです。 main に相当するものはWWWブラウザの中にあって, それが paint を必要に応じて呼び出して使っているだけなのです。 この事情は後ほどもっと詳しく説明します。
さて,この paint method は, browser がこの applet を読み込んだときのほか, browser の画面がいったん隠れた後で再び現れたときにも呼び出されて, 描画を実行します。
paint method に与えられている引数(ひきすう) Graphics g は, main の場合の String args[] に似ています。 描画関係の設定(default の色など)についての情報を 持っている Graphics 型の変数 g が, WWW browser から paint method に与えられ, それに基づいて描画をします。
dfault の描画色は黒ですが,ここでは
g.setColor(Color.blue);としてこれを黄色に変えています。色には
black, blue, cyan, darkGray, gray, green, lightGray, magenta, orange, pink, red, white, yellowが定義されていますが,任意の色を作ることもできます。
最後に,
g.fillOval(140, 40, 20, 20);が円を描く部分です。
Javaの座標は,画面の左上隅を原点 (0, 0) として, 右に進むほど x 座標が増え, 下に進むほど y 座標が増えます。 fillOval(140, 40, 20, 20); は,左端隅の座標が (140, 40) で, 幅 20,高さ 20 の長方形(この場合は正方形)に内接する楕円の内側を 塗りつぶす命令です。