Report#2:

ディスプレイ出力Javaアプレット{〜11/08(Mon)}
講義資料のJavaアプレットを参考に、簡単なディスプレイ出力Javaアプレットを 作成せよ。

ハイパーリンク

・Java Applet 1

・Java Applet 2

・全体の考察





Java Applet 1
(例を少し変えただけ)
プログラム


import java.awt.*; // ウィンドウ関連ツール(Abstract WindowToolkit)を使う
import java.util.Random; // 乱数を使う
import java.applet.Applet;

public class Report02b extends Applet { // アプレットの名前は Report02b にする
public void paint(Graphics g) { // 描画手順は以下の通り
Random a = new Random(); // 新しい乱数列 aを用意する
for (int i = 0; i lt; 60; i++) { // 0 から 60までループ
g.setColor(new Color(a.nextInt())); // 整数の乱数を発生し,それで色を決める
int x = (int)(300 * a.nextDouble()); // 整数変数 x に300×(0以上1未満の実数の乱数) を(切り捨てて整数にして代入する
int y = (int)(100 * a.nextDouble()); // 上と同様
int r = (int)(40 * a.nextDouble()) + 10; // 上と同様
g.fillRect(x - r, y - r, 3 * r, 3 * r); // 座標(x,y)に、辺の長さ r の長方形を描く
}
}
}

実行結果
Report02b.html

考察



・public void paint(Graphics g) {

  paintメソッドは、アプレットがブラウザにロードされた時に起動される。
  また、引数でGraphicsクラスの機能を使うようにしています。

・nextInt()

  一様分布のint型の擬似乱数を返す

・nextDouble()
  0.0~1.0の範囲で一様分布のdouble型の擬似乱数を返す
  2つのプログラムでは、0.0~1.0の範囲のある数字(double型)に40もしくは 400をかける事でそれをint型(整数)にしています。
   この場合それは四角形の始点座標にあたるので、かける数が多い




Java Applet 2



プログラム

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

public class Report02a extends Applet{
public void init(){
setBackground(Color.red); // 背景を赤にする 
}
public void paint(Graphics g) {
/* 直線、四角形、円を表示します。 */
String ss =quot; Java applet !!quot;; /* Java applet !!を表示 */
g.setColor(Color.green); // 図と文字を緑色にす る
g.drawLine(0, 0, 60, 60); // 直線の位置
g.fillRect(70, 70, 60, 60); // 四角形の位置
g.fillOval(140, 140, 60, 60); // 円の位置

g.setFont(new Font(quot;Sandquot;, Font.PLAIN, 20)); 
/* 文字のスタイルを変える */
g.drawString(ss, 60, 250);   // 文字の表示位置  
}
}



実行結果

Report02a.html



考察

import java.awt.*;という宣言が行われている。"*"の 意味は、java.awtパッケージ内の全てのクラスを使用する事が可能になるという
ものである。java.awtはグラフィックスとGUIのパッケージである。このパッ
ケージにはGraphicsクラスがある。これを使うと、画面への基本的な出力は
みなカバーされる。例えば、

文字列 線 円 四角形 イメージ

などの描画を行うことができる。ここでのメソッドは下の通りである。
(他の例は、後でその例をあげます。)



・g.drawLine(0, 0, 60, 60);


  これは線を表示します。

1番目の引数は、表示する線の開始X座標で、アプレットの表示領域の左上が 基点になり、そこら右方向へのピクセル値です。
2番目の引数は、表示する線の開始Y座標で、アプレットの表示領域の左上が 基点になり、そこら下方向へのピクセル値です。
3番目の引数は、表示する線の終了X座標で、アプレットの表示領域の左上が 基点になり、そこら右方向へのピクセル値です。
4番目の引数は、表示する線の終了Y座標で、アプレットの表示領域の左上が 基点になり、そこら下方向へのピクセル値です。



・g.drawRect(70, 70, 60, 60);

  これは四角形を表示します。

1番目の引数は、表示する線の開始X座標で、アプレットの表示領域の左上が 基点になり、そこら右方向へのピクセル値です。
2番目の引数は、表示する線の開始Y座標で、アプレットの表示領域の左上が 基点になり、そこら下方向へのピクセル値です。
3番目の引数は、X方向の辺の長さのピクセル値です。
4番目の引数は、Y方向の辺の長さのピクセル値です。



・g.drawOval(140, 1400, 60, 60);

  これは円を表示します。

1番目の引数は、表示する線の開始X座標で、アプレットの表示領域の左上が 基点になり、そこら右方向へのピクセル値です。
2番目の引数は、表示する線の開始Y座標で、アプレットの表示領域の左上が 基点になり、そこら下方向へのピクセル値です。
3番目の引数は、X方向の辺の長さのピクセル値です。
4番目の引数は、Y方向の辺の長さのピクセル値です。

尚、円は、引数で指定した四角形内に収まるように表示されます。







全体の考察

・ポイント

1. Javaアプレットのコンパイルは javac コマンドで行う。
2. Javaアプレットの実行は appletviewer コマンドか、 HTMLファイル(〜.html)で行う。
3. WebブラウザのURLとして HTMLファイル を指定すると Javaアプレット が起動される。
4. JavaアプレットJavaアプリケーション とは異なる記述方法をとる。




・import
  普通、異なるパッケージのクラスをたくさん利用するとき、すべてのクラスにいちいちパッケージ名をつけなければいけないが、

    import パッケージ名.クラス名;

  としておくと、異なるパッケージを利用するときも、クラス名だけを書けばいいことになっている。

・paintメソッドとGraphicsクラス
  paintメソッドはアプレットが描画される際に呼び出されるメソッドで、引数としてGraphicsオブジェクトをとります。   このGraphicsクラスの変数を利用することで、アプレット内に文字や図形、画像などの表示を行うことができます。

・パッケージ
  パッケージとは、クラスを使う種類ごとにわかりやすくまとめたもの




・流れ


  始めに,import でクラスライブラリパッケージを取り込みます.ここでは,utilパッケージの中にある Randomクラスと、appletパッケージの中にあるAppletクラスと,awtパッケージの中にあるクラスを取り込みます. ここで,
  import java.awt.*;
としてますが,この「*」は, パッケージ内のクラス全部を取り込むという意味です。 つまり,ここでは プログラムを作るために使う部品を用意します.
そして,
  public class report02_ extends Applet{
で,report02_.javaというファイルなので,report02_という名前のクラスを決めます.ここで,
  extends Applet
は,Appletクラスを元部品(継承extends)として新たにクラス(部品)を作ると言う意味です.最後の{は、 これに対応する}までが一つのクラスであることをあらわします.paintメソッドは,アプレットが プラウザにロードされたときに起動されます.





パッケージの例


・java.lang
  javaの最も基本的なクラスが含まれているため、このパッケージに関しては インポート宣言や完全修飾名を記述せずに、クラス名だけで参照することができ る。

・java.applet
  アプレットを作成し、実行するためのクラス群

・java.util
  オブジェクトのコレクションを扱うための各種のクラスを含むユーティリ ティーク ラス群

・java.io
  入出力用のクラス及インターフェイスのクラス群

・java.text
  国際化対応アプリケーションでテキストを扱うためのクラスとインターフェ イスの クラス群

・java.net
  ネットワーク用のクラス群

・java.event
  AWTのイベント関連クラス群





描画のメソッドの例


・drawLine( int x1, int y1, int x2, int y2)
  (x1,y1)と(x2,y2)との間に線を描く

・drawRect( int x, int y, int width, int height)
  (x,y)を左上隅とする指定された長方形を描く

・drawOval( int x, int y, int width, int height)
  指定の長方形内に内接する円または楕円を描く

・fillRect( int x, int y, int width, int height)
  指定された長方形を現在の色で塗りつぶす

・fillOval( int x, int y, int width, int height)
  指定された長方形に内接する円または楕円を塗りつぶす

・drawString(String str, int x, int y)
  文字列strを位置(x,y)から描く

・drawArc(int x, int y,int width,int height,int startAngle, int arcAngle)
  指定された長方形に内接する円弧または楕円弧を描く。startAngle で開始角度を指定し、arcAngleで弧の展開角度を指定する。






感想

  今回のjavaアプレットは前回のjavaアプリケーションとは違い、難しかしく、 微妙なズレが気になったりして大変だったが、やってて何となく楽しかったです。 

  反省点としては、凝ったものか作れなかった事ですね…。



参考文献


  独習Java第2版
        ジョセフ・オニール 著


  「京都Javaアプレット工房」