・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); // 文字列描画メソッド
}
}
実行結果
・Circles.java
import java.awt.*; // ウィンドウ関連ツール(Abstract Window Toolkit)を使う
import java.util.Random; // 乱数を使う
import java.applet.Applet;
public class Circles extends Applet { // アプレットの名前は Circles にする
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 の円板を描く
}
}
}
実行結果
・Original1.java
1: import java.awt.*;
2: import java.applet.*;
3: import java.util.Random;
4: public class Original1 extends Applet {
5: public void paint(Graphics g) {
6: Random a = new Random();
7: for(int i = 0; i < 15; i++){
8: g.setColor(new Color(a.nextInt()));
9: int x = (int)(400 * a.nextDouble());
10: int y = (int)(200 * a.nextDouble());
11: int r = (int)(10 * a.nextDouble())+5;
12: g.fillOval(x - r, y - r, r * 2, r * 2);
13: }
14: String s = "Love & Peace";
15: Font f = new Font("Monospaced", Font.BOLD, 35);
16: int v = 80;
17: int w = 100;
18: g.setFont(f);
19: g.drawString(s, v, w);
20: }
21: }
実行結果
◯考察
1: import java.awt.*;
2: import java.applet.*;
3: import java.util.Random;
この3行は、既存のクラスを使用するための文です。
awtには、描画、GUI部品関係などのクラスがあり、ここではGraphicsを使用します。
utilには、日付などのユーティリティ関係などのクラスがあり、ここではRandomを使用します。
appletには、アプレット関係のクラスがあります。アプレットを使用する場合に必要となります。
4: public class Original1 extends Applet {
アプレットのクラスを定義します。
5: public void paint(Graphics g) {
{と}内に書かれるものがpaintメソッドの定義になります。Graphicsクラスの引数gを用いて、アプレット内に文字や図形 を描くことができます。
6: Random a = new Random();
aの値を乱数にします。
7: for(int i = 0; i < 15; i++){
for文なので、条件を満たす間、{と}でくくられた部分を繰り返し処理します。
変数iが15未満の間、繰り返されます。8〜10の文が繰り返し処理されます。
8: g.setColor(new Color(a.nextInt()));
乱数であるaの値で、gの色をランダムに設定します。
9: int x = (int)(400 * a.nextDouble());
10: int y = (int)(200 * a.nextDouble());
11: int r = (int)(10 * a.nextDouble())+5;
Randomクラスのメソッドで0.0〜1.0の範囲の数字をランダムに返します。
12: g.fillOval(x - r, y - r, r * 2, r * 2);
fillOvalは円を塗りつぶして、描画することができます。円の座標は(x-r,y-r)になり、ランダムに表示されるようになっ ています。円の半径もランダムなので、それぞれ大きさが異なるようになっています。
14: String s = "Love & Peace";
"Love & Peace"を文字列sとして表します。
15: Font f = new Font("Monospaced", Font.BOLD, 35);
表示される文字列を設定します。"Monospaced"はフォントの種類で、他にはDialogやTimeRoman等があります。
Font.BOLDは文字のスタイルで、BOLDは太字です。35はフォントのサイズを表します。
16: int v = 80;
17: int w = 100;
v,wにそれぞれ初期値を設定します。
18: g.setFont(f);
文字列の表示方法を設定します。
19: g.drawString(s, v, w);
文字を表示します。vとwは座標になります。
Original1では、円の位置をランダムにしたので、次は固定してみました。
・Original2.java
1: import java.awt.*;
2: import java.applet.*;
3: import java.util.Random;
4: public class Original2 extends Applet {
5: public void paint(Graphics g) {
6: Random a = new Random();
7: int k = 5;
8: for(int i = 0; i < 5; i++){
9: g.setColor(new Color(a.nextInt()));
10: int x = 150;
11: int y = 100;
12: int r = (int)(20 * k);
13: k = k - 1;
14: g.fillOval(x - r, y - r, r * 2, r * 2);
15: }
16: String s = "Love & Peace";
17: Font f = new Font("Monospaced", Font.BOLD, 35);
18: g.setColor(new Color(a.nextInt()));
19: int v = 25;
20: int w = 110;
21: g.setFont(f);
22: g.drawString(s, v, w);
23: }
24: }
実行結果
◯考察
1:〜6:までoriginal1と一緒
7: int k = 5;
kに初期値5を設定します。
12: int r = (int)(20 * k);
13: k = k - 1;
rは円の半径を表します。少しずつ円を小さくしていくために、kを1ずつ減らしました。
14:〜22:までOriginal1と一緒
その他にも色々作ってみました。
・Original3.java
1: import java.awt.*;
2: import java.applet.*;
3: import java.util.Random;
4: public class Original3 extends Applet {
5: public void paint(Graphics g) {
6: Random a = new Random();
7: for(int i = 0; i < 15; i++){
8: g.setColor(new Color(a.nextInt()));
9: int x = (int)(400 * a.nextDouble());
10: int y = (int)(200 * a.nextDouble());
11: int r = (int)(10 * a.nextDouble())+5;
12: g.fillOval(x - r, y - r, r * 2, r * 2);
13: }
14: for(int k = 0; k < 10; k++){
15: g.setColor(new Color(a.nextInt()));
16: int n = (int)(400 * a.nextDouble());
17: int m = (int)(200 * a.nextDouble());
18: int l = (int)(5 * a.nextDouble())+5;
19: g.fillRect(n - l, m - l, l * 2, l * 2);
20: }
21: String s = "Love & Peace";
22: g.setColor(new Color(a.nextInt()));
23: Font f = new Font("Monospaced", Font.BOLD, 35);
24: int v = 80;
25: int w = 100;
26: g.setFont(f);
27: g.drawString(s, v, w);
28: }
29: }
実行結果
◯考察
1:〜13:はOriginal1.Original2と一緒
14: for(int k = 0; k < 10; k++){
15: g.setColor(new Color(a.nextInt()));
16: int n = (int)(400 * a.nextDouble());
17: int m = (int)(200 * a.nextDouble());
18: int l = (int)(5 * a.nextDouble())+5;
19: g.fillRect(n - l, m - l, l * 2, l * 2);
20: }
次は、fillRectを使って四角形を描いてみました。座標は(n-l,m-l)で、l*2の幅、l*2の高さの四角形になります。
21:〜27:はOriginal1.Original2と一緒
・Original4.java
1: import java.awt.*;
2: import java.applet.*;
3: import java.util.Random;
4: public class Original4 extends Applet {
5: public void paint(Graphics g) {
6: Random a = new Random();
7: int x = 300;
8: int y = 70;
9: for(int i = 0; i < 5; i++){
10: g.setColor(new Color(a.nextInt()));
11: int r = 30;
12: g.fillOval(x - r, y, r * 2, r * 2);
13: x = x - (r*2);
14: }
15: String s = "Love & Peace";
16: Font f = new Font("Monospaced", Font.BOLD, 35);
17: g.setColor(new Color(a.nextInt()));
18: int v = 55;
19: int w = 110;
20: g.setFont(f);
21: g.drawString(s, v, w);
22: }
23: }
実行結果
◯考察
1:〜12:はOrig1.Orig2.Orig3と一緒
13: x = x - (r*2);
x座標の位置を、円1つ分ずつずらさないといけないので、半径2つ分をxから引きました。
15:〜21:はOrig1.Orig2.Orig3と一緒