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

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

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

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

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

Assignment9_1.java

JavaプログラミングⅠ

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

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

JavaプログラミングⅠ

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

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

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

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

Microsoft PowerPoint - prog12.ppt

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

Prog1_10th

ガイダンス

PowerPoint プレゼンテーション

ガイダンス

PowerPoint Presentation

PowerPoint プレゼンテーション

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

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

JavaプログラミングⅠ

JavaプログラミングⅠ

Prog2_9th

JavaプログラミングⅠ

Java言語 第1回

JavaプログラミングⅠ

JavaプログラミングⅠ

PowerPoint プレゼンテーション

JavaプログラミングⅠ

ガイダンス

Prog1_15th

JavaプログラミングⅠ

Javaプログラムの実行手順

2

ガイダンス

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

Prog2_11th

Microsoft PowerPoint ppt

基本情報STEP UP演習Java対策

ガイダンス

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

Prog1_6th

Microsoft PowerPoint - prog03.ppt

JavaプログラミングⅠ

JavaプログラミングⅠ

Prog2_6th

Prog1_3rd

Java言語 第1回

PowerPoint プレゼンテーション

スライド 1

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

Prog2_6th

次の演習課題(1),(2)のプログラムを完成させよ

ガイダンス

Prog2_12th

Microsoft PowerPoint - prog11.ppt

Java言語 第1回

Prog1_12th

JavaプログラミングⅠ

PowerPoint プレゼンテーション

Microsoft PowerPoint - prog11.ppt

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

Microsoft PowerPoint - prog09.ppt

Microsoft PowerPoint - prog09.ppt

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

た場合クラスを用いて 以下のように書くことが出来る ( 教科書 p.270) プログラム例 2( ソースファイル名 :Chap08/AccountTester.java) // 銀行口座クラスとそれをテストするクラス第 1 版 // 銀行口座クラス class Account String name

Java講座

GEC-Java

<4D F736F F D2091E F196E291E889F090E C4816A82CC838C E646F6378>

デジタル表現論・第6回

Prog1_2nd

JavaプログラミングⅠ

スライド 1

Prog2_10th

JavaプログラミングⅠ

Java 2 - Lesson01

PowerPoint プレゼンテーション

Prog1_12th

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

Javaの作成の前に

JAVA入門

オブジェクト指向プログラミング・同演習 5月21日演習課題

PowerPoint Presentation

Java言語 第1回

(1) プログラムの開始場所はいつでも main( ) メソッドから始まる 順番に実行され add( a,b) が実行される これは メソッドを呼び出す ともいう (2)add( ) メソッドに実行が移る この際 add( ) メソッド呼び出し時の a と b の値がそれぞれ add( ) メソッド

Prog2_15th

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

Microsoft Word - java a.doc

第 3 回 Java 講座 今回の内容 今週の Java 講座はコレクション 拡張 for 文, ガベージコレクションについて扱う. 今週の Java 講座は一番内容が薄いも のになるだろう. コレクション コレクションとは大きさが決まっていない配列だと考えればよい. コレクションには List 先

r1.dvi

文字列操作と正規表現

Microsoft PowerPoint - chap10_OOP.ppt

Prog2_10th

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

第1章 ビジュアルプログラミング入門

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

Java知識テスト問題

Transcription:

HCI プログラミング 10 回目テキストフィールドとキーイベント 今日の講義で学ぶ内容 テキストフィールドの利用 キーイベントの処理 テキストフィールドの利用 1 テキストフィールドを配置してみましょう テキストフィールドを用いることにより 数値や文字列などのデータ入力が可能になります ソースファイル名 :Sample10_1.java // HP よりインポート文をここへ貼り付けてください // テキストフィールドの表示 public class Sample10_1 extends Application public void start(stage stage) throws Exception // テキストフィールドを生成 / 設定します TextField[] tf = new TextField[3]; tf[0] = new TextField(); tf[1] = new TextField(" テキストの初期文字列です "); tf[2] = new TextField(); tf[2].setprompttext(" プロンプトテキストです "); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.addall(tf); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" テキストフィールド "); // ステージを表示します stage.show(); 1 / 9

public static void main(string[] args) launch(args); テキストフィールドとはキーボード入力によるテキストを受け付ける入力フィールドです 入力フィールドをマウスでクリックしてフォーカスを移動した後 キーボードから文字列を入力することができます テキストフィールドクラス TextField テキストフィールドはクラス TextField により表現され 各種設定を行うメソッドが準備されています テキストフィールドの生成 new TextField(); テキストフィールドの初期文字列 new TextField(" テキストの初期文字列です "); プロンプトテキストの指定 setprompttext(" プロンプトテキストです "); クラス TextField のオブジェクトを生成するときに入力フィールドに最初に表示される文字列を指定し ます 指定しないときは 空の入力フィールドが生成されます プロンプトテキストとは入力フィールドに最初に表示される文字列です 初期文字列と異なり 薄い灰色で表示されます キーボードから入力フィールドに文字列を入力すると プロンプトテキストは消えます プロンプトテキストには入力例や注意点を指定しておくと良いでしょう プロンプトテキスト 利用したクラスの一覧 TextField クラス TextField() テキストフィールドを生成します TextField(String txt) 初期文字列 txt をもつテキストフィールドを生成します void setprompttext(string txt) 文字列 txt をプロンプトテキストに指定します 2 / 9

2 入力フィールド内の文字位置を調整してみましょう 入力フィールド内の文字列を左寄せや中央寄せ 右寄せで配置することができます ソースファイル名 :Sample10_2.java // HP よりインポート文をここへ貼り付けてください // テキストフィールド内の文字位置 public class Sample10_2 extends Application public void start(stage stage) throws Exception // テキストフィールドを生成 / 設定します TextField[] tf = new TextField[3]; tf[0] = new TextField(" 左寄せ "); tf[1] = new TextField(" 中央 "); tf[2] = new TextField(" 右寄せ "); tf[0].setalignment(pos.top_left); tf[1].setalignment(pos.top_center); tf[2].setalignment(pos.top_right); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.addall(tf); vb.setpadding(new Insets(10)); vb.setspacing(15); // シーンを生成 / 設定します Scene scene = new Scene(vb); // ステージを設定します stage.setscene(scene); stage.settitle(" テキストフィールド "); // ステージを表示します stage.show(); public static void main(string[] args) launch(args); 利用したクラスの一覧 TextField クラス void setalignment(pos p) テキストフィールドの文字列の配置を p に指定します 3 / 9

キーイベントの処理 3 キーイベントを取得してみましょう 入力フィールドでキー入力を行うと キーを押すたびにキーイベントが発生します ソースファイル名 :Sample10_3.java // HP よりインポート文をここへ貼り付けてください // キーイベントの取得 public class Sample10_3 extends Application public void start(stage stage) throws Exception // テキストフィールドを生成 / 設定します TextField tf = new TextField(); // イベントハンドラを設定します MyEventHandler keyhandler = new MyEventHandler(); tf.addeventhandler(keyevent.any, keyhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(tf); 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<KeyEvent> public void handle(keyevent e) EventType<KeyEvent> type = e.geteventtype(); if(type == KeyEvent.KEY_PRESSED) System.out.println(" キーが押されました "); if(type == KeyEvent.KEY_RELEASED) System.out.println(" キーが離されました "); 4 / 9

if(type == KeyEvent.KEY_TYPED) String str=e.getcharacter(); System.out.println(" キーがタイプされました ("+str+")"); public static void main(string[] args) launch(args); 実行結果 キーが押されました キー A を押すキーがタイプされました (a) キー A を離すキーが離されました : キーイベントとは キーイベントは キーの入力によって発生するイベントです これらのイベントが発生したタイミング で 各処理を実行することができます キーイベントを表現するクラス KeyEvent クラス KeyEvent により表現され 以下の種類があります KeyEvent.KEY_PRESSED キーが押されたときに発生します KeyEvent.KEY_RELEASED キーが離されたときに発生します KeyEvent.KEY_TYPED キーがタイプされた ( 押されて離された ) ときに発生します これらのイベントは次の順番で発生します 通常の文字キーの場合 : PRESSED TYPED RELEASED 特殊キー ( ファンクションキー Alt キー Ctrl キーなど ) の場合 : PRESSED RELEASED この他 すべてのイベントを表現するイベントがあります 実際に発生するイベントではなく すべてのイベントを受け取りたいときに利用します KeyEvent.ANY 上記すべてのイベントを表現します 5 / 9

また イベント KEY_TYPED が発生したとき 入力された文字を受け取ることができます 入力文字の取得 (String 型 ) getcharacter(); 他のイベント PRESSED と RELEASED のときは CHAR_UNDEFINED(String 型 ) を返します キーイベントを処理するイベントハンドラインタフェース EventHandler<KeyEvent> キーイベントはイベントハンドラクラスで受け取り 対応する処理を行います 1. EventHandler<KeyEvent> インタフェースを実装してイベントハンドラクラスを宣言 2. 継承される void handle(keyevent e); メソッドをオーバーライドして処理を記述 発生したイベントがメソッドの引数 e に渡されて呼び出されます コード例 1. class MyEventHandler implements EventHandler<KeyEvent> 2. public void handle(keyevent e) 3. 4. // ここにイベントに対応する処理を記述します 5. 6. テキストフィールドへイベントハンドラを登録 GUI 部品やシーン ステージは様々なイベントを発生します キーイベントはテキストフィールドで受け 取ることができます テキストフィールドにイベントハンドラを登録します コード例 1. MyEventHandler kh = new MyEventHandler(); 2. tf.addeventhandler(keyevent.any, kh); オブジェクト kh をイベントハンドラとして TextField クラスのオブジェクト tf に登録します 利用したクラスの一覧 KeyEvent クラス KeyEvent.KEY_PRESSED キーを押したときに発生するイベントです EventType<KeyEvent> geteventtype() イベントの種類を取得します String getcharacter() 入力文字を取得します EventHandler<KeyEvent> インタフェース void handle(keyevent e); イベントが発生したときに実行されます TextField クラス void addeventhandler(eventtype<keyevent> e, EventHandler<KeyEvent> h) イベント e を受け取るハンドラ h を登録します 6 / 9

4 アクションイベントを取得してみましょう 入力フィールドに文字列を入力した後 リターンキーを押すとアクションイベントが発生します ソースファイル名 :Sample10_4.java // HP よりインポート文をここへ貼り付けてください // アクションイベントの取得 public class Sample10_4 extends Application public void start(stage stage) throws Exception // テキストフィールドを生成 / 設定します TextField tf1 = new TextField(); TextField tf2 = new TextField(); tf1.setid("textfield1"); tf2.setid("textfield2"); // イベントハンドラを設定します MyEventHandler actionhandler = new MyEventHandler(); tf1.setonaction(actionhandler); tf2.setonaction(actionhandler); // レイアウト VBox を生成 / 設定します VBox vb = new VBox(); ObservableList<Node> lst = vb.getchildren(); lst.add(tf1); lst.add(tf2); 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) TextField tf = (TextField)e.getTarget(); System.out.println(tf.getId()+"/"+tf.getText()); 7 / 9

public static void main(string[] args) launch(args); 実行結果 textfield1/hci プログラミング textfield2/ 本日はキー入力です! : 上のテキストフィールドに入力後 リターンを押す 下のテキストフィールドに入力後 リターンを押す テキストフィールドとアクションイベント 入力フィールドに文字列を入力したあとリターンキーを押すとアクションイベントが発生します これ らのイベントが発生したタイミングで 各処理を実行することができます キーイベントとアクションイベントの違いは? キーイベントは入力フィールドでキー入力があるたびに発生するイベントです 一方 アクションイベ ントは入力フィールドでリターンキーを押すと発生するイベントです キーイベントが発生したときに受け取ることができる文字データは 1 文字です 一方 アクションイベ ントが発生したときに受け取ることができる文字データは入力フィールドに入力された文字列です アクションイベントを処理するイベントハンドラインタフェース EventHandler<ActionEvent> アクションイベントはイベントハンドラクラスで受け取り 対応する処理を行います 1. EventHandler<ActionEvent> インタフェースを実装してイベントハンドラクラスを宣言 2. 継承される void handle(actionevent e); メソッドをオーバーライドして処理を記述 発生したイベントがメソッドの引数 e に渡されて呼び出されます テキストフィールドへイベントハンドラを登録 イベントハンドラを登録するとき イベントの種類に応じて次のメソッドを用います キーイベントのイベントハンドラを登録する場合クラス TextField のメソッド addeventhandler() を用います 1. MyEventHandler kh = new MyEventHandler(); 2. tf.addeventhandler(keyevent.any, kh); オブジェクト kh をイベントハンドラとして TextField クラスのオブジェクト tf に登録します 8 / 9

アクションイベントのイベントハンドラを登録する場合クラス TextField のメソッド setonaction() を用います 1. MyEventHandler ah = new MyEventHandler(); 2. tf.setonaction(ah); オブジェクト ah をイベントハンドラとして TextField クラスのオブジェクト tf に登録します テキストフィールドに入力された文字列を受け取るには? クラス TextField のメソッドを用いて現在入力されている文字列を取り出すことができます また ボタンやラベルなどの GUI 部品と同じように識別子を設定 / 取得するメソッドもあります 入力フィールド内の文字列の取得(String 型 ) gettext(); 識別子の設定("textfield1" を識別子として ) setid("textfield1"); 識別子の取得(String 型 ) getid(); 利用したクラスの一覧 TextField クラス void setonaction(eventhandler<actionevent> h) イベントを受け取るハンドラ h を登録します String gettext() 入力フィールド内の文字列を取得します 9 / 9