report1
課題1
講義資料のJavaアプレットを参考に、簡単なディスプレイ出力Javaアプレットを
作成し、その動作を考察せよ。
[1] 簡単なアプレットプログラムの例1
・Helloa.java
import java.applet.Applet; // 短名 Applet
import java.awt.Graphics; // 短名 Graphics
public class Helloa extends Applet { // サブクラス Helloa
public void paint(Graphics g) { // paint()メソッド
g.drawString("Hello, Java world!", 30, 40); // 文字列描画メソッド
}
}
Helloa.javaの実行結果
[2] 簡単なアプレットプログラムの例2
・Circles.java
import java.awt.*; // ウィンドウ関連ツール(Abstract WindowToolkit)を使う
import java.util.Random; // 乱数を使う
import java.applet.Applet;
public class Circles extends Applet { // アプレットの名前は Circles にするv
public void paint(Graphics g) { // 描画手順は以下の通り
Random a = new Random(); // 新しい乱数列 aを用意する
for (int i = 0; i < 1000; i++) { // 0 から 999 までループ
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.fillOval(x - r, y - r, 2 * r, 2 * r); // 中心 (x,y),半径
r の円板を描く
}
}
}
Circles.javaの実行結果
オリジナル ソースプログラム
repopo1.java
import java.awt.*;
import java.applet.Applet;
public class repopo1 extends Applet {
public void paint(Graphics g){
g.setColor(Color.green);
g.fillOval(130,20,50,50);
int n = 21;
int xdata[] = new int[n];
int ydata[] = new int[n];
xdata[0] = 175;
ydata[0] = 75;
xdata[1] = 50;
ydata[1] = 75;
xdata[2] = 40;
ydata[2] = 137;
xdata[3] = 60;
ydata[3] = 137;
xdata[4] = 65;
ydata[4] = 95;
xdata[5] = 103;
ydata[5] = 95;
xdata[6] = 90;
ydata[6] = 170;
xdata[7] = 90;
ydata[7] = 210;
xdata[8] = 45;
ydata[8] = 210;
xdata[9] = 30;
ydata[9] = 230;
xdata[10] = 110;
ydata[10] = 230;
xdata[11] = 110;
ydata[11] = 170;
xdata[12] = 140;
ydata[12] = 170;
xdata[13] = 180;
ydata[13] = 280;
xdata[14] = 200;
ydata[14] = 280;
xdata[15] = 160;
ydata[15] = 170;
xdata[16] = 168;
ydata[16] = 95;
xdata[17] = 191;
ydata[17] = 137;
xdata[18] = 253;
ydata[18] = 137;
xdata[19] = 253;
ydata[19] = 117;
xdata[20] = 201;
ydata[20] = 117;
g.fillPolygon(xdata,ydata,n);
}
}
コンパイル
javac repopo1.java
実行結果
実行結果
を別の方法で表示
考察
import java.awt.*;
では、java.awt.*をインポート(取り込み)している。
import java.applet.Applet;
では、java.applet.Appleをインポートしている。
public class repopo1 extends Applet {
では、repopo1がクラスが Appletクラスを拡張することを宣言している。
アプレットでは、必ずこのクラスを拡張しなければならない。
public void paint(Graphics g){
では、paintというメソッドを定義する。
voidは、戻り値を返さないということ。
Graphics gは、Graphicsオブジェクトをgという引数にして
paintに渡すということ。
g.setColor(Color.green);で緑色を指定。
g.fillOval(130,20,50,50);で、左上を基準に、横をx、縦をy、として
xが130、yが20から始まるxの幅50、yの幅50の緑に塗りつぶしの円を書いた。
(fillは塗りつぶすということ。)
int n = 21;で、多角形の頂点の個数を指定。
int xdata[] = new int[n];は、xの値。
int ydata[] = new int[n];は、yの値。
xとyの頂点の値を順番よく指定する。
g.fillPolygon(xdata,ydata,n);で指定した頂点の値を結びつけ、(最初と最後
に指定した頂点の値は自動的に結びつく)塗りつぶされた多角形ができる。
感想
今回は初めてのjavaの課題でしたが、正直むずかしかった。図を考えるだけなら
すぐにできたが、考察が自分的には少し難しかったと思う。それに、初めてHTML
を使っての課題提出だったので、たったこれだけのことをするのにかなり時間が
かかってしまった。(みんなのすこし見ましたが、とても見やすい)
次の課題からは、もっと見やすく工夫しようと思う。2週間あるので、じっくり
時間をかけてやりたいと思う。あと、実行結果の絵は非常口のマークをイメージ
してやりました。