Report#2:ディスプレイ出力Javaアプレット
* 講義資料のJavaアプレットを参考に、簡単なディスプレイ出力Javaアプ レットを作成せよ。

オリジナルソース(2つの楕円)

[nw0337:~/prog2] j03037% cat rep2_a.java
import java.applet.Applet;  //アプレットクラスを拡張。
import java.awt.*;

public class rep2_a extends Applet {
    public void paint(Graphics g) {

        g.setColor(Color.blue);  //色を青に指定
        g.fillOval(100,100,150,30);  //塗りつぶされた楕円を描く
        g.fillOval(0,0,300,100);  //塗りつぶされた楕円を描く
    }
}

実行結果

オリジナル?ソース2(Helloが次々と出力される)
(例題のアプレットをくっつけ、アニメーションにしたもの)
[nw0337:~/prog2] j03037% cat rep2_c.java
import java.applet.Applet; 
import java.awt.*;
import java.util.Random;

public class rep2_c extends Applet implements Runnable    
{

    public void init()   //アプレットの初期化
    {
        Thread th;       //スレッドを宣言
        th = new Thread(this);
        th.start();      //スレッド起動
    }
    public void run()
    {
        try{
            for(int i=0; i <=100; i++){  //画像が100になるまで繰り返し

                repaint();    //画面表示の更新
                Thread.sleep(100);    //スレッドを0.1秒ごとに一時停止
            }
        }
	catch(InterruptedException e){}    //予定外の時に実行
    }
    public void paint(Graphics g) {
        Random a = new Random();    //乱数列aを用意
 
        for (int j = 0; j <= 25; j++) {    //0から25までループ
            int v = (int)(400 * a.nextDouble());     //整数変数xに400
            を代入
            int w = (int)(200 * a.nextDouble());     //同上
            int u = (int)(10 * a.nextDouble()) + 3;  //同上
            g.drawString("Hello",v-u,w-u);      //文字列を表示
        }
    }
}


実行結果



考察

  • import java.awt.*
     
      これは最後に*をつけることによって「パッケージ内の複数のクラスを
    すべてインポートする」ということになります。
    つまり、*をつけないとすると、
    import java.awt.Gtaphics;
    import java.awt.Color;
    import java.awt.Font;
    のようにしなければなりません。
    ただし、サブパッケージのクラスまでは取り込めないので、この時はまた
    他に独自に取り込む必要があります。
    

  • tryとcatchのブロック
      この2つのブロックは、プログラム中での例外処理をする基本となるもの。
    
      使い方
    
        try{
           例外の発生を調べる文;
           .....
        }
      catch(例外のクラス 変数名){
         例外が起きた時に処理する文;
      }
    
    といったものです。適切な処理を行うコードを書くことで、エラーに強い
    プログラムを作ることができます。
    

  • Thread.sleep(100);
       ()の中に入る数値によって止める時間が変わります。
    1000だと1秒になります。
    

  • Graphicsクラスの主なメソッド
      今回の課題でははじめは'fillOvil'を,2つ目に'drawString'を使いました。
    


    感想



      アプレットがweb上で起動してくれず、とても悩まされました。
    アプレットでアニメ等を作れるようになれれば面白いと思いました。
    とにかく疲れました。
    
    
    ------参考文献-----------------------
    
    やさしいJava第2版  高橋麻奈 著