Document

Applet Event 後半
Name : 青木良樹
ID
: onionsong
内容:
Button オブジェクト
Checkbox オブジェクト
Choice オブジェクト
TextField オブジェクト
GridLayout オブジェクト(省略)
01 AppletEvent後半
4 Button オブジェクトButton2.java の説明 1
Button2 クラス
6 public class Button2 extends Applet implements ActionListener{
// ボタンをクリックした時の、アクションイベントを行うために
ActionListener を実装。
Init メソッド
11 Button b = new Button(“Hello”);
// Button b を宣言して、Button b をラベル Hello で作成。
// Button(String label)
12 add(b);
// ボタン b を配置。
13 b.addActionListener(this);
// イベント付きのボタンにするためにActionListenerへ登録。
02 Button.javaの説明1
4 Button オブジェクトButton2.java の説明 2
actionPerformed メソッド
18 public void actionPerformed(ActionEvent e)
アクションイベントが発生するとここのメソッドに飛ぶ。
この場合はボタンがクリックされたときにここに飛ぶ。
03 Button2.javaの説明2
4 Button オブジェクトButton2.java の流れ
1
2
3
4
Button b; で b をプログラム内に作成
new Button(“Hello”); で b をボタン化し、 Hello というラベルを貼り付ける
add(b); で b を配置
b.addActionListener(this); b をイベント付きのボタンにするためにActionListenerに登録
1
Show
2
b
Hello
Hello
3
5 click
4
ActionListener
~~~~
~~~~~
ボタンbが押されたらactionPerformedへ飛ぶ
7
6
actionPerformed メソッド
絵を描く
04 Button2.javaの流れ
4 Button オブジェクトButton()コンストラクタの概要
Button()
ラベルなしのボタンを構築します。
Button(String label)
指定されたラベルを持つボタンを構築します。
05 Button()コンストラクタの概要
4 Button オブジェクト演習 Button3.java
演習
Button3.java:
ボタンを押す度にパックマンの向きが変わる Button3.java を書け.
ヒント:
0-9 までの乱数を作るには ,
(int)Math.round(Math.random() *10.0) を実行する.
毎回書換えるには,repaint()を呼ぶ.
向きを覚えておくインスタンス変数を使う.
06 演習Button3.java
4 Button オブジェクト演習 Button3.java 解答例
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Button3 extends Applet implements ActionListener {
Graphics g;
int angle = 30;
// 角度を代入しておく変数を宣言:初期値30
public void init(){
Button b = new Button(“Hello”);
// ボタンの宣言と作成
add(b);
// ボタンの配置
b.addActionListener(this);
// リスナーに登録
g = getGraphics();
}
public void actionPerformed(ActionEvent e){
angle = (int)Math.round(Math.random()*360); // 乱数0~359を作成
repaint();
}
public void paint(Graphics g){
g.fillArc(100, 100, 100, 100, angle, 300);
}
}
07 演習Button3.java
5 Checkbox オブジェクト
Checkbox2.java の説明 1
Checkbox2 クラス
6 public class Checkbox2 extends Applet implements ItemListener{
// チェックボックスをクリックした時の、
アイテムイベントを行うためにItemListener を実装。
Init メソッド
12 Checkbox c1 = new Checkbox(“Turn”);
// Checkbox c1 を宣言して、c1 をラベル Turn で作成。
// Checkbox(String label)
13 add(c1)
// Checkbox c1 の配置。
14 c1.addItemListener(this);
08 Checkbox2.javaの説明1
// イベント付きのCheckboxにするため、ItemListenerへ登録。
5 Checkbox オブジェクト
Checkbox2.java の説明 2
itemStateChanged メソッド
25 public void itemStateChanged(ItemEvent e)
// アイテムイベントが発生するとここのメソッドに飛ぶ。
// この場合はチェックボックスがクリックされたときにここに飛ぶ。
// チェックボックス版のactionPerformedメソッドのようなもの。
26 Checkbox c = (Checkbox)e.getItemSelectable();
// getItemSelectable() でc にイベントの発生元を代入。
27 String s = c.getLabel();
// getLabel() で s に c のラベルを代入。
09 Checkbox2.javaの説明2
5 Checkbox オブジェクト
Checkbox2.java の説明 3
29 if(c.getState()) color = Color.red;
// getState()でチェックボックスの状態を取得。チェックが入っ
ていたら 赤。
32 else
color = Color.green;
// そうでなかったら 緑。
10 Checkbox2.javaの説明3
5 Checkbox オブジェクト
Checkbox()コンストラクタの概要
Checkbox()
ラベルなしのチェックボックスを作成します。
Checkbox(String label)
指定されたラベルが付いたチェックボックスを作成します。
Checkbox(String label, boolean state)
指定されたラベルが付いたチェックボックスを作成し、指定された
状態に設定します。
Checkbox(String label, boolean state, CheckboxGroup group)
指定されたラベルが付いたチェックボックスを、指定された
チェックボックスグループに構築し、指定された状態に設定します。
11 Checkbox()コンストラクタの概要
5 Checkbox オブジェクト
演習
演習 Checkbox3.java
Checkbox3.java:
Checkbox2.java を改良し,“Open“ ボタンを付けた Checkbox3.javaを書
け.ここでパックマンは、指定されている時だけ口を開ける.
簡単な解答:
ラベルが「Open」のCheckboxを作成する。
変数 t2 を作成し、g.fillArc(100, 100, 100, 100, t, t2);と変更す
る。
if(s.equals("Open")){
if(c.getState())
t2 = 300;
else
t2 = 360;
}
を追加。
12 演習Checkbox3.java
6 Choice オブジェクト
Choice1.java の説明 1
Choice1 クラス
6 public class Choice1 extends Applet implements ItemListener{
// チェックボックスと同様クリックした時の、
アイテムイベントを行うためにItemListener を実装。
Init メソッド
10 Choice c = new Choice();
// Choice オブジェクト c を宣言、作成。
11 c.addItem("Red");
// c に「Red」という項目を追加。
14 c.addItemListener(this);
// c をイベント付きのChoiceにするため、ItemListenerへ登録。
15 add(c);
// c の配置
13 Choice1.javaの説明1
6 Choice オブジェクト
演習
演習 Choice2.java
Choice2.java:
Choice1.java を改良し,North, South, West, East の選択に より位置を
移動するパックマン Choice2.java を書け.
簡単な解答:
新しいChoiceオブジェクトを作成し, North, South, West,
の項目を追加。
East
位置を決定する変数 x と y を作成し,
g.fillArc(x, y, 100, 100, 30, 300);
に変更。
if(s.equals("North"))
{y = 50; x = 100;}
else if(s.equals("South")) {y = 150;
x = 100;}
のように,itemStateChangedメソッドに条件式を追加。
14 演習Choice2.java
7 TextField オブジェクト
TextField1.java の説明
TextField1 クラス
5 public class TextField1 extends Applet implements TextListener{
// テキストボックスで,イベントを行うために
TextListener を実装。
7 TextField m;
// TextField m の宣言。
Init メソッド
11 m = new TextField("hello", 20);
// TextField m を初期値 hello サイズ 20 で作成。
12 m.addTextListener(this);
// イベントを受け取らせるためにリスナーに追加。
13 add(m);
// TextField を配置。
15 TextField1.javaの説明
7 TextField オブジェクト
TextField1.java の流れ
1 TextField m; で m をプログラム内に作成.
2 new TextField(“hello”, 20); で m をテキストフィールド化し,
初期値を hello に,横のサイズを 20 に設定.
3 m.addTextListener(this); でイベントを受け取らせるためにリスナーに追加.
4 add(m); で m を配置.
1
Show
2
m
hello
4
hello
Size 20
3
hello
8
paintメソッド
5 入力
TextListener
~~~~
~~~~~
mの値が変更されたらtextValueChangedに飛ぶ。
変数 s に入力されている文字列を
描画
6
7
textValueChangedメソッド
変数 s へ,テキストフィールドに
入力されている文字列を代入
16 TextField1.javaの流れ
7 TextField オブジェクト
TextField()コンストラクタの概要
TextField()
新しいテキストフィールドを構築します。
TextField(int columns)
指定された列数で新しい空のテキストフィールドを構築します。
TextField(String text)
指定されたテキストで初期化された新しいテキストフィールドを構
築します。
TextField(String text, int columns)
指定されたテキストが表示されるように初期化され、指定された
列数を表示できる幅の新しいテキストフィールドを構築します。
17 TextField()コンストラクタの概要
7 TextField オブジェクト
演習
演習 TextField2.java
TextField2.java:
TextField1.java を書換えて,大きさが指定できるパックマン
TextField2.java を書け.
ヒント :
入力された文字列は整数型ではないので,変換が必要。
18 演習TextField2.java
7 TextField オブジェクト
演習 TextField2.java 解答例
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class TextField2 extends Applet implements TextListener{
TextField m;
int size = 50;
public void init(){
m = new TextField("サイズを入力", 20);
m.addTextListener(this);
add(m);
}
public void paint(Graphics g){
g.setColor(Color.blue);
g.fillArc(100, 100, size, size, 30, 300);
}
public void textValueChanged(TextEvent e){
size = Integer.parseInt(m.getText());
repaint();
}
}
19 演習TextField2.java解答例
宿題
宿題1
TextField3.java:
テキスト9.7より.
TextField2.java を参考に,大きさの指定を別のボタンで 行う
TextField3.javaを書け.
20 宿題1 TextField3.java
宿題
宿題2
Key3.java:
MouseEventを使って
マウスを押した回数が
押したところに表示される
プログラムを書いてください。
お願いしますm(__)m
21 宿題2 Count.java
宿題
宿題3
ChangeColor.java:
一番上のテキストフィールドに文字を入力すると,TextField1.java と同様
に下にリアルタイムにテキストを表示する.
次の三つのテキストフィールドは,左からそれぞれ色の,Red , Green ,
Blue , 値を示す.
一番下のボタンをクリックするとRGBの
値を読み込み文字とパックマンの色を変
更する.
というプログラム ChangeColor.java を
作ってください.
22 宿題3 ChangeColor.java