HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなど

Similar documents
MyEventHandler actionhandler = new MyEventHandler(); m.addeventhandler(actionevent.any, actionhandler); // レイアウト BorderPane を生成 / 設定します BorderPane bp

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファ

// ステージを設定します stage.setscene(scene); stage.settitle(" キャンバス "); // ステージを表示します stage.show(); public static void main(string[] args) launch(args); キャンバス

ラベルを管理するクラス Label ラベルはクラス Label により管理され 各種設定を行うメソッドが準備されています ラベルの生成 new Label("1. 通常のラベルです "); ラベルのサイズ setprefsize(200,100); ラベル文字が 1. 通常のラベルです で横 200

Assignment9_1.java

ウィンドウの構成ウィンドウはタイトルバーとウィンドウ枠からなります タイトルバーには最小化 / 最大化ボタンや閉じるボタンがあります また ウィンドウはクライアント領域をもちます クライアント領域にはボタンなど GUI 部品が配置されます GUI 部品配置 ( レイアウト ) ウィンドウ ( ステー

HCI プログラミング 5 回目ウィンドウに画像を表示してみよう 今日の講義で学ぶ内容 画像の表示 画像のエフェクト 画像のビューポート指定 画像の表示 1 画像を表示してみましょう 画像の表示はクラス ImageView により管理されます ソースファイル名 :Sample5_1.java //

JavaプログラミングⅠ

Microsoft PowerPoint - prog12.ppt

JavaプログラミングⅠ

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 今日の講義講義で学ぶ内容 switch 文 論理演算子 条件演算子 条件判断文 3 switch 文 switch 文 式が case のラベルと一致する場所から直後の break; まで処理しますどれにも一致致しない場合 def

PowerPoint プレゼンテーション

break 文 switch ブロック内の実行中の処理を強制的に終了し ブロックから抜けます switch(i) 強制終了 ソースコード例ソースファイル名 :Sample7_1.java // 入力値の判定 import java.io.*; class Sample7_1 public stati

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文

PowerPoint プレゼンテーション

Microsoft PowerPoint ppt

Java言語 第1回

プログラミング基礎I(再)

JavaプログラミングⅠ

ガイダンス

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

ガイダンス

Microsoft PowerPoint - prog11.ppt

Javaプログラムの実行手順

2

Java プログラミング Ⅰ 7 回目 switch 文と論理演算子 条件判断文 3 switch 文 switch 文式が case の値と一致した場合 そこから直後の break; までを処理し どれにも一致しない場合 default; から直後の break; までを処理する 但し 式や値 1

Microsoft PowerPoint - prog11.ppt

Java プログラミング Ⅰ 3 回目変 数 今日の講義講義で学ぶ内容 変数とは 変数の使い方 キーボード入力の仕方 変 数 変 数 一時的に値を記憶させておく機能 変数は 型 ( データ型 ) と識別子をもちます 2 型 ( データ型 ) 変数に記憶する値の種類変数の型は 記憶できる値の種類と範囲

JavaプログラミングⅠ

JavaプログラミングⅠ

ガイダンス

JavaプログラミングⅠ

ガイダンス

PowerPoint Presentation

Prog2_11th

JavaプログラミングⅠ

Java言語 第1回

JavaプログラミングⅠ

JavaプログラミングⅠ

ガイダンス

Prog2_10th

JavaプログラミングⅠ

Prog2_6th

Java知識テスト問題

GEC-Java

JAVA入門

Prog2_10th

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Prog1_3rd

Prog1_12th

Prog2_6th

Prog2_15th

Java 基礎問題ドリル ~ メソッドを理解する ~ 次のプログラムコードに 各設問の条件にあうメソッドを追加しなさい その後 そのメソッドが正しく動作することを検証するためのプログラムコードを main メソッドの中に追加しなさい public class Practice { // ここに各設問

Prog2_9th

Microsoft PowerPoint - prog09.ppt

メディプロ1 Javaプログラミング補足資料.ppt

Javaの作成の前に

Microsoft PowerPoint - prog09.ppt

PowerPoint プレゼンテーション

(Java/FX ) Java CD Java version Java VC++ Python Ruby Java Java Eclipse Java Java 3 Java for Everyone 2 10 Java Midi Java JavaFX Shape Canvas C

Prog2_4th

Prog1_12th

Prog2_12th

GUIプログラムⅣ

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

PowerPoint プレゼンテーション

Javaセキュアコーディングセミナー2013東京第1回 演習の解説

Java言語 第1回

C#の基本

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版   None

ガイダンス

リファレンス,配列 例外処理

public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

基本情報STEP UP演習Java対策

Prog2_9th

11 ソフトウェア工学 Software Engineering デザインパターン DESIGN PATTERNS デザインパターンとは? デザインパターン 過去のソフトウェア設計者が生み出したオブジェクト指向設計に関して, ノウハウを蓄積し 名前をつけ 再利用しやすいようにカタログ化したもの 各デ

Prog1_10th

Javaセキュアコーディングセミナー東京 第2回 数値データの取扱いと入力値の検証 演習解説

K227 Java 2

Microsoft Word - Android_DI講座_画面800×1280

Prog1_15th

できるプログラマーを本気で育てる Java 超 Webプログラマーへの第 歩 第 2 回オブジェクト指向 テクノロジックアート 瀬 嘉秀

intra-mart Accel Platform — イベントナビゲータ 開発ガイド   初版  

Microsoft PowerPoint - OOP.pptx

プログラミング入門1

Java 2 - Lesson01

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

Microsoft PowerPoint - prog03.ppt

JavaプログラミングⅠ

Java講座

解答上の注意 1 解答は 解答 紙の問題番号に対応した解答欄にマークしなさい 2 選択肢は 問ごとに 意されています 問 1の選択肢は 問 2で使 しません 3 選択肢は量が多いため 探しやすさの観点よりグループ分けされています グループ分けに合わせて解答欄が区切られていますが 横 1 列で問題 1

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

GUIプログラムⅡ

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

< F2D B838A835882CC8CF68EAE2E6A7464>

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Microsoft PowerPoint - chap10_OOP.ppt

Prog2_2nd

Java言語 第1回

Transcription:

HCI プログラミング 8 回目ボタン チェックボックス ラジオボタン 今日の講義で学ぶ内容 ボタンとアクションイベント ボタンのカスタマイズ チェックボックスとラジオボタン ボタンとアクションイベント 1 ボタンを配置してみましょう ボタンは ラベルと同じようにフォントやその色 画像の貼り付けなどを設定できます ソースファイル名 :Sample8_1.java // HP よりインポート文をここへ貼り付けてください // ボタンの配置 public class Sample8_1 extends Application public void start(stage stage) throws Exception // ボタンを生成 / 設定します Button bt1 = new Button(" メリークリスマス n ボタン 1"); Button bt2 = new Button(" メリークリスマス n ボタン 2"); bt1.setgraphic(new ImageView("xmas.jpg")); bt1.settextfill(color.red); bt1.setfont(new Font(24)); bt2.setgraphic(new ImageView("gift.jpg")); bt2.settextfill(color.red); bt2.setfont(new Font(24)); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(bt1); lst.add(bt2); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" イベント処理 "); 1 / 20

// ステージを表示します stage.show(); public static void main(string[] args) launch(args); ボタンを管理するクラス Button ボタンはクラス Button により表現されます 前回学習したラベルを表現するクラス Label と同じスーパークラス Labeled を持ちます クラス Labeled のメソッドを用いて 文字のフォントや色 画像の貼り付け 画像の相対位置などラベルと同様の設定ができます ボタンの生成 new Button(" メリークリスマス "); 画像の貼り付け setgraphic(new ImageView("xmas.jpg")); 文字の色 settextfill(color.red); 文字のフォント指定 setfont(new Font(24)); 24 ポイントで赤色の メリークリスマス という名前で画像 xmas.jpg が貼られたボタンを生成します Object Node Labeled Label Button CheckBox HyperLink 利用したクラスの一覧 Button クラス Button(String s) void setgraphic(node n) void settextfill(paint p) void setfont(font f) 文字列 s のボタンを生成します GUI 部品 n をボタンに貼ります Node クラスは ImageView クラスのスーパークラスです 文字の色を p に設定します Paint クラスは Color クラスのスーパークラスです フォントを f に設定します 2 / 20

2 ボタンから発生するアクションイベントを受け取ってみましょう アクションイベントは ボタンをクリックすると発生します ソースファイル名 :Sample8_2.java // HP よりインポート文をここへ貼り付けてください // ボタンとアクションイベント public class Sample8_2 extends Application public void start(stage stage) throws Exception // ボタンを生成 / 設定します Button bt1 = new Button(" メリークリスマス 1"); Button bt2 = new Button(" メリークリスマス 2"); bt1.setid("button1"); bt2.setid("button2"); // イベントハンドラを設定します MyEventHandler actionhandler = new MyEventHandler(); bt1.addeventhandler(actionevent.any, actionhandler); bt2.addeventhandler(actionevent.any, actionhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(bt1); lst.add(bt2); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" イベント処理 "); // ステージを表示します stage.show(); // イベントハンドラ ( イベント処理 ) クラスの宣言 private class MyEventHandler implements EventHandler<ActionEvent> public void handle(actionevent e) Button bt = (Button)e.getTarget(); System.out.println(bt.getId()); 3 / 20

public static void main(string[] args) launch(args); 実行結果 Button1 メリークリスマス1を押す Button2 メリークリスマス2を押す Button1 メリークリスマス1を押す : アクションイベントとは アクションイベントは ボタンやチェックボックスなど主に GUI 部品に変化があったときに発生するイ ベントです これらのイベントが発生したタイミングで 各処理を実行させることができます アクションイベントを表現するクラス ActionEvent クラス ActionEvent により表現され 以下の種類があります ActionEvent.ACTION 唯一のイベントです この他 すべてのイベントを表現するイベントがあります 実際に発生するイベントではなく すべてのイベントを受け取りたいときに利用します ActionEvent.ANY 上記すべてのイベントを表現します 今後アクションイベントの種類が増えることを想定しています アクションイベントを処理するイベントハンドラインタフェース EventHandler<ActionEvent> アクションイベントはイベントハンドラクラスで受け取り 対応する処理を行います 1. EventHandler<ActionEvent> インタフェースを実装してイベントハンドラクラスを宣言 2. 継承される void handle(actionevent e); メソッドをオーバーライドして処理を記述 発生したイベントがメソッドの引数 e に渡されて呼び出されます コード例 1. class MyEventHandler implements EventHandler<ActionEvent> 2. public void handle(actionevent e) 3. 4. // ここにイベントに対応する処理を記述します 5. 6. 4 / 20

ボタンへイベントハンドラを登録 GUI 部品やシーン ステージは様々なイベントを発生します これらを受け止めるためにイベントハンドラをそれぞれに登録する必要があります アクションイベントはボタンなど GUI 部品を表現するクラスで受け取ることができます ボタンにイベントハンドラを登録します コード例 1. MyEventHandler eh = new MyEventHandler(); 2. bt.addeventhandler(actionevent.any, eh); オブジェクト eh をイベントハンドラとして Button クラスのオブジェクト bt に登録します ボタンと識別子複数のボタンを 1 つのイベントハンドラで処理するとき イベントが発生したらどのボタンから発生したのかを知りたい場合があります ボタンには識別子を設定することができます 識別子を用いてどのボタンから発生したイベントなのかを判断します Button クラスに識別子の設定と取得を行うメソッドが準備されています 識別子の設定("Button1" を識別子として ) setid("button1"); 識別子の取得(String 型 ) getid(); これらのメソッドはクラス Labeled から継承されていますので そのサブクラスである CheckBox クラ スや RadioButton クラスでも同様に識別子の設定と取得が可能です 後の章で説明します 利用したクラスの一覧 ActionEvent クラス ActionEvent.ACTION 主に GUI 部品に変化があったときに発生するイベントです EventTarget gettarget() イベントが発生した GUI 部品を取得します EventHandler<ActionEvent> インタフェース void handle(actionevent e); イベントが発生したときに実行されます Button クラス void setid(string s) 文字列 s をボタンの識別子に設定します String getid() ボタンの識別子を取得します void addeventhandler(eventtype<actionevent> e, EventHandler<ActionEvent> h) イベント e を受け取るハンドラ h を登録します 5 / 20

3 ボタン毎に処理を分岐してみましょう ボタンの識別子を利用して ボタン毎に別々の処理を記述できます ソースファイル名 :Sample8_3.java // HP よりインポート文をここへ貼り付けてください // ボタン毎に処理を分岐 public class Sample8_3 extends Application public void start(stage stage) throws Exception // ボタンを生成 / 設定します Button bt1 = new Button(" メリークリスマス 1"); Button bt2 = new Button(" メリークリスマス 2"); bt1.setid("button1"); bt2.setid("button2"); // イベントハンドラを設定します MyEventHandler actionhandler = new MyEventHandler(); bt1.addeventhandler(actionevent.any, actionhandler); bt2.addeventhandler(actionevent.any, actionhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(bt1); lst.add(bt2); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" イベント処理 "); // ステージを表示します stage.show(); // イベントハンドラ ( イベント処理 ) クラスの宣言 private class MyEventHandler implements EventHandler<ActionEvent> public void handle(actionevent e) Button bt = (Button)e.getTarget(); String id = bt.getid(); if(id.equals("button1")) System.out.println(" ボタン 1 が押されました "); 6 / 20

else if(id.equals("button2")) System.out.println(" ボタン 2 が押されました "); public static void main(string[] args) launch(args); 実行結果 ボタン1が押されました メリークリスマス1を押すボタン2が押されました メリークリスマス2を押すボタン1が押されました メリークリスマス1を押す : ボタンの識別と分岐ボタンがもつ識別子は文字列 (String 型 ) で表現されます String クラスに文字列を比較するメソッドが準備されています 文字列の比較(boolean 型 ) equals("button1"); 文字列"Button1" と等しい場合 true を戻します 文字列"Button1" と等しくない場合 false を戻します 利用したクラスの一覧 String クラス boolean equals(object s) 与えられた文字列 s と等しいかどうか (true/false) を判断します 7 / 20

ボタンのカスタマイズ 4 デフォルトボタン / キャンセルボタンを指定してみましょう リターンキーやエスケープキーで動作するボタンを指定できます ソースファイル名 :Sample8_4.java // HP よりインポート文をここへ貼り付けてください // デフォルトボタンとキャンセルボタン public class Sample8_4 extends Application public void start(stage stage) throws Exception // ボタンを生成 / 設定します Button bt1 = new Button(" メリークリスマス 1"); Button bt2 = new Button(" メリークリスマス 2"); bt1.setid("button1"); bt1.setdefaultbutton(true); bt2.setid("button2"); bt2.setcancelbutton(true); // イベントハンドラを設定します MyEventHandler actionhandler = new MyEventHandler(); bt1.addeventhandler(actionevent.any, actionhandler); bt2.addeventhandler(actionevent.any, actionhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(bt1); lst.add(bt2); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" イベント処理 "); // ステージを表示します stage.show(); // イベントハンドラ ( イベント処理 ) クラスの宣言 private class MyEventHandler implements EventHandler<ActionEvent> public void handle(actionevent e) 8 / 20

Button bt = (Button)e.getTarget(); System.out.println(bt.getId()); public static void main(string[] args) launch(args); 実行結果 Button1 リターン (Enter) キーを押す Button1 リターン (Enter) キーを押す Button2 エスケープ (Esc) キーを押す : デフォルトボタンとは リターン (Enter) キーを押すと このボタンから ActionEvent が発生します デフォルトボタンは他 のボタンとは異なる色で表示されます Button クラスにデフォルトボタンを設定するメソッドが準備されています デフォルトボタンの設定 setdefaultbutton(true); キャンセルボタンとは エスケープ (Esc) キーを押すと このボタンから ActionEvent が発生します Button クラスにキャンセルボタンを設定するメソッドが準備されています キャンセルボタンの設定 setcancelbutton(true); 利用したクラスの一覧 Button クラス void setdefaultbutton(boolean b) void setcancelbutton(boolean b) デフォルトボタンの設定を行います キャンセルボタンの設定を行います 9 / 20

5 ボタンにニーモニックを指定してみましょう [Alt]+[A] や [Alt]+[X] でボタンが動作するニーモニックを指定できます ソースファイル名 :Sample8_5.java // HP よりインポート文をここへ貼り付けてください // ボタンとニーモニック public class Sample8_5 extends Application public void start(stage stage) throws Exception // ボタンを生成 / 設定します Button bt1 = new Button(" メリークリスマス 1 _A"); Button bt2 = new Button(" メリークリスマス 2 _B"); bt1.setid("button1"); bt1.setdefaultbutton(true); bt2.setid("button2"); bt2.setcancelbutton(true); // イベントハンドラを設定します MyEventHandler actionhandler = new MyEventHandler(); bt1.addeventhandler(actionevent.any, actionhandler); bt2.addeventhandler(actionevent.any, actionhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(bt1); lst.add(bt2); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" イベント処理 "); // ステージを表示します stage.show(); // イベントハンドラ ( イベント処理 ) クラスの宣言 private class MyEventHandler implements EventHandler<ActionEvent> public void handle(actionevent e) Button bt = (Button)e.getTarget(); System.out.println(bt.getId()); 10 / 20

public static void main(string[] args) launch(args); 実行結果 Button1 [Alt]+[A] キーを押す Button1 [Alt]+[A] キーを押す Button2 [Alt]+[B] キーを押す : ニーモニックとは マウスでボタンをクリックしなくても キーコンビネーションでボタンを押すことができます これを ニーモニックといいます たとえば [Alt]+[S] や [Alt]+[C] があります ニーモニックは ボタンの名前 ( 文字列 ) の最後に 半角スペースを入れ アンダーバーとこれに続く 英数字で指定されます [Alt] キーと 指定した英数字を同時に押すと 該当するボタンからアクション イベントが発生します たとえば new Button(" 開く _O"); [Alt]+[O] で開くボタンを押すことができます new Button(" 保存する " _S); [Alt]+[S] で保存するボタンを押すことができます 11 / 20

チェックボックスとラジオボタン 6 チェックボックスから発生するアクションイベントを受け取ってみましょう チェックボックスのチェックを入れたり外したりするとアクションイベントが発生します ソースファイル名 :Sample8_6.java // HP よりインポート文をここへ貼り付けてください // チェックボックスとアクションイベント public class Sample8_6 extends Application public void start(stage stage) throws Exception // チェックボックスを生成 / 設定します CheckBox cb1 = new CheckBox(" メリークリスマス 1"); CheckBox cb2 = new CheckBox(" メリークリスマス 2"); cb1.setid("checkbox1"); cb1.setselected(true); cb2.setid("checkbox2"); // イベントハンドラを設定します MyEventHandler actionhandler = new MyEventHandler(); cb1.addeventhandler(actionevent.any, actionhandler); cb2.addeventhandler(actionevent.any, actionhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(cb1); lst.add(cb2); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" イベント処理 "); // ステージを表示します stage.show(); // イベントハンドラ ( イベント処理 ) クラスの宣言 private class MyEventHandler implements EventHandler<ActionEvent> public void handle(actionevent e) CheckBox cb = (CheckBox)e.getTarget(); 12 / 20

boolean on = cb.isselected(); System.out.println(cb.getId()+"/"+on); public static void main(string[] args) launch(args); 実行結果 CheckBox1/false メリークリスマス1のチェックを外す CheckBox1/true メリークリスマス1のチェックを入れる CheckBox2/true メリークリスマス2のチェックを入れる CheckBox2/false メリークリスマス2のチェックを外す : チェックボックスとは チェックボックスは 選択状態と解除状態を切り替えることができる GUI 部品です チェックボックス のチェックを入れたり外したりすると アクションイベントが発生します チェックボックスを管理するクラス CheckBox チェックボックスはクラス CheckBox により表現されます 前回学習したラベルを表現するクラス Label と同じスーパークラス Labeled を持ちます クラス Labeled のメソッドを用いて 文字のフォントや色 画像の貼り付け 画像の相対位置などラベルと同様の設定ができます Object Node Labeled Label Button CheckBox HyperLink 13 / 20

アクションイベントを処理するイベントハンドラインタフェース EventHandler<ActionEvent> イベントハンドラクラスの宣言は ボタンの場合と同じように行います 1. EventHandler<ActionEvent> インタフェースを実装してイベントハンドラクラスを宣言 2. 継承される void handle(actionevent e); メソッドをオーバーライドして処理を記述 チェックボックスへイベントハンドラを登録 チェックボックスから発生するイベントを受け取ります それぞれのチェックボックスにイベントハン ドラを登録します コード例 1. MyEventHandler eh = new MyEventHandler(); 2. cb.addeventhandler(actionevent.any, eh); オブジェクト eh をイベントハンドラとして CheckBox クラスのオブジェクト cb に登録します チェックボックスと識別子 複数のチェックボックスを 1 つのイベントハンドラで処理するときは ボタンの場合と同じように 識 別子を用いてどのチェックボックスから発生したイベントなのかを判断します CheckBox クラスに識別子の設定と取得を行うメソッドが準備されています 識別子の設定("CheckBox1" を識別子として ) setid("checkbox1"); 識別子の取得(String 型 ) getid(); チェックボックスの状態を設定したり確認したりするにはチェック状態を設定 / 取得するメソッドがクラス CheckBox に準備されています チェック状態の設定 setselected(true); チェック状態の取得(boolean 型 ) isselected(); 戻り値が true であればチェックされています 戻り値が false でればチェックされていません 利用したクラスの一覧 CheckBox クラス CheckBox(String s) 文字列 s をもつチェックボックスを生成します void setid(string s) 文字列 s をチェックボックスの識別子に設定します String getid() チェックボックスの識別子を取得します void addeventhandler(eventtype<actionevent> e, EventHandler<ActionEvent> h) イベント e を受け取るハンドラ h を登録します void setselected(boolean b) チェック状態 (true/false) を設定します boolean isselected() チェック状態 (true/false) を返します 14 / 20

7 チェックボックスとボタンを連携してみましょう チェックボックスのチェック状態をボタンの有効 / 無効に反映してみましょう ソースファイル名 :Sample8_7.java // HP よりインポート文をここへ貼り付けてください // チェックボックスとボタンの連携 public class Sample8_7 extends Application private Button bt; public void start(stage stage) throws Exception // チェックボックスとボタンを生成 / 設定します CheckBox cb = new CheckBox(" 規約を読みました "); bt = new Button(" 注文確定 "); cb.setselected(false); bt.setdisable(true); // イベントハンドラを設定します MyEventHandler actionhandler = new MyEventHandler(); cb.addeventhandler(actionevent.any, actionhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(cb); lst.add(bt); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" イベント処理 "); // ステージを表示します stage.show(); // イベントハンドラ ( イベント処理 ) クラスの宣言 private class MyEventHandler implements EventHandler<ActionEvent> public void handle(actionevent e) CheckBox cb = (CheckBox)e.getTarget(); if(cb.isselected()) bt.setdisable(false); else bt.setdisable(true); 15 / 20

public static void main(string[] args) launch(args); 16 / 20

8 ラジオボタンから発生するアクションイベントを受け取ってみましょう ラジオボタンを選択するとアクションイベントが発生します ソースファイル名 :Sample8_8.java // HP よりインポート文をここへ貼り付けてください // ラジオボタンとアクションイベント public class Sample8_8 extends Application public void start(stage stage) throws Exception // ラジオボタンを生成 / 設定します RadioButton rb1 = new RadioButton(" 開く "); RadioButton rb2 = new RadioButton(" 保存 "); RadioButton rb3 = new RadioButton(" 終了 "); rb1.setid("open"); rb2.setid("save"); rb3.setid("quit"); // ラジオボタンをグループ化します ToggleGroup gp = new ToggleGroup(); rb1.settogglegroup(gp); rb2.settogglegroup(gp); rb3.settogglegroup(gp); // イベントハンドラを設定します MyEventHandler actionhandler = new MyEventHandler(); rb1.addeventhandler(actionevent.any, actionhandler); rb2.addeventhandler(actionevent.any, actionhandler); rb3.addeventhandler(actionevent.any, actionhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(rb1); lst.add(rb2); lst.add(rb3); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" イベント処理 "); // ステージを表示します stage.show(); 17 / 20

// イベントハンドラ ( イベント処理 ) クラスの宣言 private class MyEventHandler implements EventHandler<ActionEvent> public void handle(actionevent e) RadioButton rb = (RadioButton)e.getTarget(); System.out.println(rb.getId()); public static void main(string[] args) launch(args); 実行結果 Open 開くを選択する Quit 終了を選択する Save 保存を選択する : ラジオボタンとは ラジオボタンは 選択状態と解除状態が排他的に切り替わるボタンです ボタンが 3 個ある場合 ボタン 1 を押したら ボタン 2 とボタン 3 は戻ります ボタン 2 を押したら ボタン 1 とボタン 3 は戻ります 同時に複数のボタンを押すことはできません 18 / 20

ラジオボタンを管理するクラス RadioButton ラジオボタンはクラス RadioButton により表現されます 前回学習したラベルを表現するクラス Label と同じスーパークラス Labeled を持ちます クラス Labeled のメソッドを用いて 文字のフォントや色 画像の貼り付け 画像の相対位置などラベルと同様の設定ができます Object Node Labeled Label Button CheckBox HyperLink RadioButton ラジオボタンをグループ化するクラス ToggleGroup ラジオボタンはグループ化することにより 排他的に切り替わるボタンの範囲を指定します クラス ToggleGroup によりグループは管理されます グループの生成 new ToggleGroup(); クラス RadioButton に グループを指定するメソッドが準備されています ラジオボタンをグループへ登録 settogglegroup(gp); 複数のラジオボタンで クラス ToggleGroup の同じオブジェクト gp を指定することで グループが指 定されます アクションイベントを処理するイベントハンドラインタフェース EventHandler<ActionEvent> イベントハンドラクラスの宣言は ボタンの場合と同じように行います 1. EventHandler<ActionEvent> インタフェースを実装してイベントハンドラクラスを宣言 2. 継承される void handle(actionevent e); メソッドをオーバーライドして処理を記述 ラジオボタンへイベントハンドラを登録 ラジオボタンから発生するイベントを受け取ります それぞれのラジオボタンにイベントハンドラを登 録します 19 / 20

コード例 1. MyEventHandler eh = new MyEventHandler(); 2. rb.addeventhandler(actionevent.any, eh); オブジェクト eh をイベントハンドラとして RadioButton クラスのオブジェクト rb に登録します ラジオボタンと識別子 複数のラジオボタンを 1 つのイベントハンドラで処理するときは ボタンの場合と同じように 識別子 を用いてどのラジオボタンから発生したイベントなのかを判断します RadioButton クラスに識別子の設定と取得を行うメソッドが準備されています 識別子の設定("Open" を識別子として ) setid("open"); 識別子の取得(String 型 ) getid(); ラジオボタンの状態を設定したり確認したりするにはチェック状態を設定 / 取得するメソッドがクラス RadioButton に準備されています チェック状態の設定 setselected(true); チェック状態の取得(boolean 型 ) isselected(); 戻り値が true であればチェックされています 戻り値が false でればチェックされていません 利用したクラスの一覧 RadioButton クラス RadioButton(String s) 文字列 s をもつラジオボタンを生成します void setid(string s) 文字列 s をラジオボタンの識別子に設定します String getid() ラジオボタンの識別子を取得します void addeventhandler(eventtype<actionevent> e, EventHandler<ActionEvent> h) イベント e を受け取るハンドラ h を登録します void setselected(boolean b) チェック状態 (true/false) を設定します boolean isselected() チェック状態 (true/false) を返します void settogglegroup(togglegroup g) ラジオボタンのグループを g に設定します ToggleGroup クラス ToggleGroup() ラジオボタンのグループを作ります 20 / 20