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
© Copyright 2024 ExpyDoc