[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

情報処理IIIA(Javaプログラミング入門)第2回

目次 索引
2.1 アプレットの動かし方
2.1.1 全体の手順
2.1.2 アプレットの例
2.2 グラフィックスの描画
2.3 ホームページへの埋め込み
2.3.1 アプレットの埋め込み
2.3.2 applet タグの属性
2.4 演習2
2.5 レポート課題

2.1 アプレットの動かし方

2.1.1 全体の手順

アプレットとは、ホームページの中で動くJavaプログラムのことです。 Javaが急速に普及した理由の一つに、アプレットを使うと高機能のホームページが作成できることがあげられます。 なお、アプレットでないJavaプログラムは、スタンドアローン・アプリケーションとよばれます。

アプレットを動かすまでには、次のような手順をふみます。

  1. エディタ(xemacsなど)を使ってプログラムを入力し、ファイルに保存します。
  2. Javaコンパイラ(javac)を使って、プログラムからバイトコードを生成します。
  3. エディタを使ってタグを入力し、ファイルに保存します。
  4. アプレット・ビューア(appletviewer)を使って、アプレットを表示します。

今回の授業でも、プログラムの中身はあまり気にせず、この手順を理解する演習を行います。

2.1.2 アプレットの例

まず、xemacsなどのエディタを起動して、次のプログラムを入力してください。 そして、前回作成した、授業用ディレクトリ(java)の中に、ファイル名をBlackBox.javaとして保存してください。 ファイル名は、「 class の右の名前.java」としなくてはいけません(4行目)。

/* 1*/ import java.applet.*;
/* 2*/ import java.awt.*;
/* 3*/ 
/* 4*/ public class BlackBox extends Applet {
/* 5*/     public void paint (Graphics g) {
/* 6*/         g.setColor(Color.black);
/* 7*/         g.fillRect(50, 50, 100, 100);
/* 8*/     }
/* 9*/ }

次に、端末エミュレータを起動し、javacコマンドを使ってこのプログラムをコンパイルしてください。 ここまでの操作は、前回と同じです。

b00a001@Ampere:~/java% ls
BlackBox.java
b00a001@Ampere:~/java% javac BlackBox.java
b00a001@Ampere:~/java% ls
BlackBox.class   BlackBox.java
b00a001@Ampere:~/java%

続いて、エディタを使って、次のタグを入力してください。 そして、授業用ディレクトリの中に、ファイル名をBlackBox.htmlとして保存してください。 これは、ホームページの作成に用いた言語HTMLの一部で、バイトコードのファイル名とアプレットの大きさを指定しています。

<applet code="BlackBox.class" width="300" height="200">
</applet>

端末エミュレータに戻り、appletviewerコマンドでこのHTMLファイルを表示してください。 ファイル名がBlackBox.htmlなので、 appletviewer BlackBox.html & と入力します。

b00a001@Ampere:~/java% ls
BlackBox.class   BlackBox.html    BlackBox.java
b00a001@Ampere:~/java% appletviewer BlackBox.html &
b00a001@Ampere:~/java%

次のようなウィンドウが開いたら成功です。 実は、このアプレットは、黒い正方形を描画するものでした。 なお、このウィンドウを閉じるには、AppletメニューのQuitを選択してください。

Applet Viewer: BlackBox
Applet
A black box
Applet started.
図 2.1  アプレット・ビューアのイメージ

もしうまくいかないようでしたら、ファイルBlackBox.htmlが正しく書けているか、BlackBox.classが作られているか、BlackBox.javaが正しく書けているかを確認してください。 アプレット・ビューアでファイルを再読み込みするには、AppletメニューのReloadを選択してください。


2.2 グラフィックスの描画

単に絵を描くだけでしたら、xpaintなどのお絵描きソフトを使ったほうが簡単です。 Javaを使って絵を描く利点の一つに、プログラムの計算結果をグラフィカルに表せることがあげられます。 今日は、絵を描くことを通じて、少しずつプログラミングになれることにします。

ここで、上記のプログラムの一部について説明します。

/* 1*/ import java.applet.*;
/* 2*/ import java.awt.*;
/* 3*/ 
/* 4*/ public class BlackBox extends Applet {
/* 5*/     public void paint (Graphics g) {
/* 6*/         g.setColor(Color.black);
/* 7*/         g.fillRect(50, 50, 100, 100);
/* 8*/     }
/* 9*/ }

6行目は、これから黒で描画せよという意味です。 色を切り替えるには、 g.setColor( color ); と書きます。 color の部分には、次のようなものが書けます。

Color.black , Color.blue , Color.cyan , Color.darkGray , Color.gray , Color.green , Color.lightGray , Color.magenda , Color.orange , Color.pink , Color.red , Color.white , Color.yellow

7行目は、左上が座標 (50, 50) であり、幅が100ピクセル、高さが100ピクセルである長方形(正方形)を塗りつぶせという意味です。 ここで注意が必要なのは、座標系が普通の数学と異なり、左上が原点で、y軸が下を向いていることです。

Coordinates of some points
図 2.2  いくつかの点の座標

長方形だけでなく、楕円(円)や直線も描けます。 以下の例を見て理解してください。

g.drawLine(10, 20, 60, 120);
点 (10, 20) から (60, 120) に直線を引きます。
g.drawRect(10, 20, 60, 120);
左上が (10, 20) であり、幅が60ピクセル、高さが120ピクセルである長方形を書きます。
g.fillRect(10, 20, 60, 120);
上記の長方形を塗りつぶします。
g.drawOval(10, 20, 60, 120);
上記の長方形に内接する楕円を書きます。
g.fillOval(10, 20, 60, 120);
上記の長方形に内接する楕円を塗りつぶします。

これらを用いたプログラムの例を示します。 新しいファイルにプログラムを保存しますので、 class の右の名前を変えます(4行目)。

RectAndOval.java
/* 1*/ import java.applet.*;
/* 2*/ import java.awt.*;
/* 3*/ 
/* 4*/ public class RectAndOval extends Applet {
/* 5*/     public void paint (Graphics g) {
/* 6*/         g.setColor(Color.white);
/* 7*/         g.fillRect(20, 10, 260, 180);
/* 8*/         g.setColor(Color.blue);
/* 9*/         g.drawRect(30, 50, 80, 40);
/*10*/         g.setColor(Color.black);
/*11*/         g.drawOval(30, 50, 80, 40);
/*12*/         g.drawLine(120, 20, 120, 180);
/*13*/         g.drawLine(270, 20, 30, 180);
/*14*/         g.fillRect(180, 90, 80, 80);
/*15*/         g.setColor(Color.yellow);
/*16*/         g.fillOval(180, 90, 80, 80);
/*17*/     }
/*18*/ }
RectAndOval.html
<applet code="RectAndOval.class" width="300" height="200">
</applet>
Rectangles and ovals
図 2.3  長方形と楕円

ここで、プログラムの順番には意味があることに注意してください。 黄色い円の後に黒い正方形を描くと、円が見えなくなってしまいます。


2.3 ホームページへの埋め込み

2.3.1 アプレットの埋め込み

アプレットとは、ホームページの中で動くJavaプログラムだと説明しました。 どのようにしてホームページに埋め込むのでしょうか。 実は、アプレット・ビューアで表示してきたHTMLファイルを、WWWブラウザで開けばよいのです。 Netscapeを起動し、ローカル・ファイルBlackBox.htmlを開いてください。

Netscape:
File Edit View Go Window Help
A black box


Applet BlackBox running
図 2.4  ブラウザのイメージ

ブラウザの背景色とアプレットの背景色が一緒なので分かりにくいのですが、アプレットが埋め込まれたホームページが表示されています。

アプレットだけのページでは、埋め込んだような気がしません。 ファイルBlackBox.htmlを編集して、他のタグも書きましょう。 確かにアプレットが埋め込まれています。

BlackBox.html
<html>
<head>
<title>Drawing</title>
</head>
<body style="background-color: white">
<h1>お絵描き</h1>
<p>黒い正方形を描きました。</p>
<div style="text-align: center">
  <applet code="BlackBox.class" width="300" height="200">
  </applet>
</div>
<p>みんな見てください。</p>
</body>
</html>
Netscape: Drawing
File Edit View Go Window Help
お絵描き

黒い正方形を描きました。

A black box

みんな見てください。


Applet BlackBox running
図 2.5  ホームページのイメージ

ブラウザは、アプレットを画像のように取り扱います。 すなわち、一つの(大きな)文字と見なしますので、前後の文と独立させたければ、 <div></div> などで囲んでください。 Netscapeでアプレットを再読み込みするには、Shiftキーを押しながら再読込ボタンをクリックしてください。

なお、 <h1> など色々なタグが入ったHTMLファイルをアプレット・ビューアで開いても、今まで通りアプレットのみが表示されます。 アプレット・ビューアは、 <applet> などごく少数のタグ以外はすべて無視します。

2.3.2 applet タグの属性

ここで、 <applet> タグの属性についてまとめます。

code="filename"(必須)
実行したいアプレットのファイル名(〜.class)を指定します。 ここにはパス名やURL/URIは書けません。
width="pixel"(必須)
アプレットの幅をピクセル単位で指定します。
height="pixel"(必須)
アプレットの高さをピクセル単位で指定します。
codebase="uri"
アプレットのあるディレクトリをURL/URIで指定します。 省略しますと、HTMLファイルのあるディレクトリが指定されます。

注意1. 自分で作ったアプレットを公開するためには、ファイル(〜.class)をディレクトリWWWの中にコピーする必要があります。

注意2. codebase 属性にはURL/URIが指定できますので、公開されている他人のアプレットを自分のホームページに埋め込むことができます。 ただし、画像と同様に、著作権などには十分配慮してください。


2.4 演習2

例を参考にして、今日説明したことを使って、ある程度複雑なグラフィックスを描画するアプレットを作成してください。 ファイル名の約束( class の右の名前 .java)に注意してください。

Traffic lights
図 2.6  グラフィックスの例

2.5 レポート課題

今日の演習2に従ってJavaプログラムを作成し、そのプログラムをkonishi@twcu.ac.jpあてにメールで提出してください。 xemacsで「ファイル」→「ファイル挿入」と選択し、.javaファイルの内容をメールに追加するとよいでしょう。 メールには、学生番号、氏名、科目名、授業日(9/27)を明記してください。


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2001年9月27日更新
konishi@twcu.ac.jp
Copyright (C) 2001 Zenjiro Konishi. All rights reserved.