プログラミング2 Report#1

Report#1


課題内容:講義資料のJavaアプレットを参考に、簡単なディスプレイ出力Javaアプレットを作成せよ。

アプレットプログラムの例[1]

import java.applet.Applet; ........ (1)
import java.awt.Graphics; ..........(2)
public class Helloa extends Applet { ............(3)
public void paint(Graphics g) { .................(4)
g.drawString("How are you?", 70, 80); ...............(5)
}
}

実行結果[1]


考察[1]


・i Termで「Helloa.java」のファイルを作る。上記の「Helloa.java」のソースを書いた
                                        後、javac Helloa.java でコンパイル。
・別に「Hello.html」のファイルを作る。上記の「Helloa.html」のソースを書いた後、 
                                                                 Helloa.classができていることを確認してappletviewerで実行。
                   (appletviewer Helloa.htmlで実行する。)
・結果、アプレットビューアが起動し、「How are you?」という文字が書かれた。
・(1)でjava.applet.Applet クラス、(2)でjava.awt.Graphics クラスをインポートしている。
 Applet クラスは全てのアプレットのスーパークラス。Graphics クラスを使えば、文字列、線、
 その他の図形をアプレットウィンドウに描写できる。
・(3)でHelloa クラスがApplet クラスを拡張することを宣言する。アプレットでは必ず拡張を
   宣言する。 ・(4)でpaint()というメソッドを定義する。このメソッドの役目はアプレットの出力を生成する。
 paint()メソッドはGraphicsオブジェクトを引数として受け取る。
・(5)は文字列を実際に表示するgraphicsオブジェクトのdrawString()メソッド。このメソッド
 の1つ目の引数("How are you?")は表示する文字列。2つ目と3つ目の引数(70,80)で文字列
 の表示を開始するx(横)とy(縦)座標を指定する。アプレットの左上隅の座標を(0,0)(原点)とす
 る。x座標の数を増やすと右へ、y座標の数を増やすと下へ表示位置はそれぞれ移動する。

アプレットプログラムの例[2] import java.awt.*; ..............(1)
import java.util.Random; .............(2)
import java.applet.Applet; ...............(3)
public class Circles extends Applet { ..............(4)
public void paint(Graphics g) { ..............(5)
Random a = new Random(); ...............(6)
for (int i = 0; i < 1000; i++) { ..............(7)
g.setColor(new Color(a.nextInt())); ..............(8)
int x = (int)(300 * a.nextDouble()); ..............(9)
int y = (int)(100 * a.nextDouble()); ..............(10)
int r = (int)(40 * a.nextDouble()) + 10; .............(11)
g.fillOval(x - r, y - r, 2 * r, 2 * r); ...............(12)
}
}
}


実行結果[2]


考察[2]


                            
・考察[1]と同じ手順でコンパイルしてappletviewerで実行した。
・結果、アプレットビューアが起動し、大小様々な円が異なるパターンの色で塗られて、重なっているイラス
トが表示された。また、アプレットウィンドウの右下隅をクリックすると、全く違うパターンの大きさや色を
   持つ円のイラストが新たに表示された。
    ・(1)でウィンドウ関連ツール(Abstract Window Toolkit)を使うことを指定。(2)で乱数を使うことを指
定。(3)でjava.applet. Applet クラスを指定。
・(4)で、Circles クラスが Applet クラスを拡張することを宣言。
・(5)で、描画の手順を(6)~(12)の通りに行うことを指定。
・(6)で、新しい乱数列aを用意する。
・(7)で、0~999まで1ずつ増えてループする変数intを指定。
・(8)で、g.setColorはnew Color(a.nextInt())を引数に持ち、引数の内容から色の決定パターンは整数の
       乱数(a.nextInt())を発生し、それで色を決めるように指定。
・(9)、(10)、(11)ではそれぞれ変数x = 300×(0以上1未満の実数の乱数)、変数y = 100×(0以上1未満の
       実数の乱数)、変数r = 40×(0以上1未満の実数の乱数)と指定。
・(12)で、中心 (x,y),半径 r の円板を描くためにg.fillOval()メソッドで指定。g.fillOval()メソッド
                      はg.fillOval(int x,int y,int w,int h)の形で、円を塗りつぶして描画し、円の中心は座標x,yに左上隅
                      が配置される幅w、高さhの四角形の中心となる。
自分で作成したアプレットプログラム[3]
import java.applet.Applet; ...............(1)
import java.awt.*; ...................(2)
public class Redribon extends Applet { ..................(3)
  public void paint(Graphics g) { ..................(4)
int n = 5; ..................(5
) int xdata[] = new int[n]; ..................(6)
int ydata[] = new int[n]; ..................(7)
xdata[0] = 50; ..................(8)
ydata[0] = 50; ..................(9)
xdata[1] = 50; ...................(10)
ydata[1] = 150; ...................(11)
xdata[2] = 125; ...................(12)
ydata[2] = 100; ...................(13)
xdata[3] = 200; ..................(14)
ydata[3] = 50; ...................(15)
xdata[4] = 200; .................(16)
ydata[4] = 150; ...................(17)
int rgb = Color.HSBtoRGB(0.0f,1.0f,1.0f); ...................(18)
g.setColor(new Color(rgb)); .....................(19)
g.fillPolygon(xdata,ydata,n); ....................(20)
}
}


実行結果[3]


考察[3]


 
・赤いリボン(Redribon)をイメージしてアプレットウィンドウで表示するようにした。
  ・実行結果は見事アプレットウィンドウに赤いリボンを描くことができた。
  ・(1)でjava.applet.Applet クラスを指定。
    ・(2)でウィンドウ関連ツール(Abstract Window Toolkit)を使うことを指定。
  ・(3)でRedribon クラスが Applet クラスを拡張することを宣言。
  ・(4)で描画の手順を(5)~(20)の通りに行うことを指定。
  ・(5)で変数の数を5つに指定。
  ・(6)、(7)で変数x,yのデータは[0]→[1]→[2]→[3]→[4]というように次々に新しく変化するように決める。
  ・変数x,yに入る数値を指定。( (8)~(17) )
  ・(18)で色を指定。Color.HSBtoRGB()メソッドを使う。色相0.0f(レッド)、彩度1.0f(鮮やか)、明度1.0f
   (明るい)に指定。static int HSBtoRGB(float h,float s,float b)メソッドは、h,s,bで指定された色相、
       彩度、明度をint型の値にコード化して返す。h,s,bの値の範囲は、0.0f~1.0f。色相はカ ラーの種類で値
       が0.0fから1.0fに近づいていくにつれて、レッド、オレンジ、イエ  ロー、グリーン、ブルー、インディゴ
        、バイオレットを表す。彩度はカラーの鮮やかさ を表し、明度はカラーの強弱を表す。明度0は黒色。
  ・(19)表示するカラーは新しく指定されたカラーとする。
  ・(20)で指定した点を結んだ線で表される多角形を指定された色で塗りつぶす。g.fillPolygon() メソッド
    を使用。abstract void fillPolygon(int x[],int y[],int n)メソッドは、n個の頂点を持つ多角形を 塗り
      つぶして描画する。頂点の座標は、配列xとyの要素として引き渡す。
  ・(21)で、appletタグはこのアプレットのコードを格納しているクラス(Redribon)を示す。アプレットウィン
      ドウの大きさを横250、縦200に指定。
  感想・反省

最近この2,3週間ずっと体調が悪く、熱をぶりかえしたり、咳や痰が止まらずついにはあばら
骨の下に通っている神経を痛めてしまって、本当に大変な思いをしてしまいました。そのため、htmlの復習が
間に合わず、課題を自分のページにアップする作業ができなかったので、次回のレポートからは必ず自分のペ
ージにアップできるようにしておきたいと思います

トップページへ