Report#2(Java)
○ディスプレイ出力Javaアプレット ●講義資料のJavaアプレットを参考に、簡単なディスプレイ出力Javaアプレットを作成せよ。【プログラムと実行結果】
test | testアプレット |
import java.applet.Applet; import java.awt.*; import java.util.Random; public class test extends Applet { public void paint(Graphics g) { Random = new Random(); for (int i = 1; i < 100; i++) { g.setColor(new Color(a.nextInt())); g.drawRect(200-i*2,100-i,i*4,i*2); g.drawOval(i,i,i,i); g.drawOval(400-i*2,i,i,i); } } } |
NO.1 | 円円円円・・・ |
import java.applet.Applet; import java.awt.*; import java.util.Random; public class repo2_1 extends Applet { public void paint(Graphics g) { //Graphicsメゾット Random a = new Random(); //乱数を得る。 for (int i = 0; i < 101; i++) { g.setColor(new Color(a.nextInt())); //色をランダムに指定。 g.drawOval(200,i,i,i); g.drawOval(200-i,i,i,i); g.drawOval(200-i*2,i,i,i); g.drawOval(200+i,i,i,i); //"drawOval"は下で説明する。 } } } |
NO.2 | 花火? |
import java.applet.Applet; import java.awt.*; import java.util.Random; public class repo2_2 extends Applet { public void init() { //initメソッド setBackground(Color.black); //背景色を黒に指定する。 } public void paint(Graphics g) { //Graphicsメソッド Random a = new Random(); //ここで乱数を得る。 for (int i = 0; i < 51; i++) { //0から50までループ g.setColor(new Color(a.nextInt())); //ランダムに色を指定する。 g.drawLine(8*i,0, 200,300); g.drawLine(8*i,i, 200,300); g.drawLine(8*i,51-i, 200,300); //drawLineも下で説明する。 int x = (int)(400 * a.nextDouble()); int y = (int)(250 * a.nextDouble()); int r = (int)(11 * a.nextDouble()); g.fillOval(x-r,y-r,2*r,2*r); g.setColor(Color.blue); //setColorで青色に指定。 g.fillRect(176,275,48,100); //fillRectも下で説明 g.setColor(Color.red); g.setFont(new Font("Bertram LET", Font.ITALIC, 48)); //setFontで書体フォントを"Bertram LET"に指定。斜体。48フォントに指定。 g.drawString("HANABI?", 105,350); //drawStringで文字列を表示。 } } } |
NO.3 | JavaJava |
import java.applet.Applet; import java.awt.*; import java.util.Random; public class repo2_3 extends Applet implements Runnable //アプレットのヘッダに implements Runnable を入れる { volatile Thread runner; //スレッドのための Thread 型変数( ここではrunner )を用意する。 public void start() //メソッド start() を用意してスレッドをスタートする。新しいスレッドを 作って // Thread 型変数 runner に入れ、スレッド runner をスタートさせる。 { if(runner == null){ runner = new Thread(this); runner.start(); //Threadが動いてなければ、開始する } } public void stop() //メソッド stop() を用意してスレッドを止める準備をする。 { runner = null; //ここでstop()が呼ばれたら,変数runner = nullとなる。 } public void run() //メソッド run() を用意してスレッドで実行する手順を記述する。 //この部分がこのアプレットの本体になる。 { Thread run = Thread.currentThread(); // 変数runに、現在起動しているThreadを読み込む。 // この時、run != null となる。 while(runner == run){ repaint(); pause(400); // stop()が呼ばれていたら、runner != run となり、 // while文が一周した時に自然にThreadが停止する。 } public void paint(Graphics g) { setBackground(Color.black); Random a = new Random(); for (int i = 0; i < 8; i++) { g.setColor(new Color(a.nextInt())); // 乱数により、色をランダム設定する。 int x = (int)(300 * a.nextDouble()); int y = (int)(200 * a.nextDouble()); int r = (int)(70 * a.nextDouble()); g.setFont(new Font("Bertram LET", Font.ITALIC, r)); //フォント,斜体,48ポイントを設定。 g.drawString("Java", x, y*2); g.drawLine(x*4/3,0, 200,400); g.drawLine(y,0, 200,400); g.drawLine(400,y, 200,400); g.drawLine(0,y, 200,400); } } void pause(int time) { try {Thread.sleep(time);} // timeミリ秒間スレッドを停止する。 catch (InterruptedException e){} // 例外を無視する。 } } |
○Javaアプレットを表示するには、HTMLファイルの中のアプレットを表示したい部分に、<APPLET></APPLET>タグを使って指定する。 (例)
<APPLET
CODE="ファイル名.class"
WIDTH=200
HEIGHT=100
> </APPLET> |
CODE="アプレットのクラスファイル名" WIDTH=アプレットの幅(ピクセル数) HEIGHT=アプレットの高さ(ピクセル数)
○パッケージとは・・・ある特定の働きをするクラスを一つにまとめたもの。
・例えば、図形や画像を使用する時に使うGraphicsクラスや、乱数を発生させる時に 使うRandomクラス等。。
パッケージ名 | パッケージの内容 |
java.applet | アプレットを作成して実行するためのクラス。 | java.lang |
言語を使うためのクラス。Javaプログラム言語で重要なパッケージ。
(例)文字列を参照するためのStringクラスなど。 |
java.awt* |
図形やイメージを使用するためのパッケージ。 *(Abstract Window Toolkit) |
java.io | 入出力を使用するときのパッケージ。 |
java.event | イベント処理をするためのパッケージ。 |
java.util | 乱数や日付と時刻の機構などを表示するときに使用されるパッケージ。 |
java.net | ネットワークを使用するためのパッケージ。 |
名前 | 内容 |
drawLine( x1, y1, x2, y2) | 座標(x1, y1)と(x2, y2)の間を線で結ぶ。 |
drawRect( x, y, width, height) |
座標(x, y)を基準にし、x軸(右)方向に幅 "width"ピクセル、y軸(下)方向に
高さ "height"ピクセルの長方形(正方形)を描く。 |
fillRect( x, y, width, height) | drawRectと同じく、座標(x, y)を基準にし、幅 "width"ピクセル、高さ
"height"
ピクセルの長方形を描くが、ここでは囲まれた部分が塗りつぶされる。 |
drawOval( x, y, width, height) |
座標(x, y)を基準にする、x軸(右)方向に幅 "width"ピクセル、y軸(下)方向に高さ "height"ピクセルの長方形(正方形)に内接する楕円(円)を描く。 |
fillOval( x, y, width, height) |
drawOvalと同じく、座標(x, y)を基準にし、幅 "width"ピクセル、高さ"height" ピクセルの長方形に内接する楕円(円)を描くが、ここでは囲まれた部分が塗りつぶされる。 |
drawArc( x, y, width, height, 角度1, 角度2) |
drawOvalと同じく、座標(x, y)を基準にし、幅 "width"ピクセル、高さ"height" ピクセルの長方形に内接する楕円(円)を描くが、ここでは扇形にする角度(角度1)と、 どれくらいの角度(角度2)の扇形にするかという部分を付け加える。円弧が描かれる。 |
fillArc( x, y, width, height, 角度1, 角度2) |
drawArcで円弧だったのが塗りつぶされるので、扇形になる。 |
drawRoundRect( x, y, width, height, arcwidth, archeight) |
隅が円みを帯びた長方形を描く。普通の長方形と異なるのは、arcwidと
tharcheight
で、前者を大きくすれば水平部分が丸みを帯び、後者を大きくすれば、水平 部分が丸みを 帯びる。よって両方大きくすれば円に近付く。 |
fillRoundRect( x, y, width, height, arcwidth, archeight) |
drawRoundRectと同じだが、中が塗りつぶされる。 |
drawPolygon( 配列1, 配列2, 点の数) |
多角形が描かれる。配列を使い、配列1を配列2にそれぞれ対応する要素の座標を、 "点の数"で結んでいく。 |
fillPolygon( 配列1, 配列2, 点の数) | drawPolygonと基本的には同じだが、中が塗りつぶされる。 |
・アプレットで文字や図形、画像を動かすアニメーションが作れる。 ・専用のスレッドを用意する必要がある。 ★今回はレポート2-No.3でスレッドを試してみました。(レポート2-No.3参照)
「新Java言語入門」ビギナー騙 著: 林 晴比古 SOFTBANK Publishing <Yet Another Java Laboratory> http://www.ipc.hokusei.ac.jp/~z00104/java/ <Java Animation> http://www.ipc.hokusei.ac.jp/~z00104/java/anim.html