Java 2 - Lesson01

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

Java 2 - Lesson01

I 4 p.2 4 GUI java.awt.event.* import /* 1 */ import mouseclicked MouseListener implement /* 2 */ init addmouselistener(this) this /* 3 */ this mousec

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

Java 2 - Lesson01

PowerPoint Presentation

Microsoft PowerPoint - prog12.ppt

text_12.dvi

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

Java言語 第1回

Microsoft PowerPoint prog1_doc2x.pptx

KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped

Safari AppletViewer Web HTML Netscape Web Web 15-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web up

Microsoft Word - Java3.DOC

ÿþ˜u#u·0¹0Æ0à0

Microsoft PowerPoint - prog11.ppt

ガイダンス

ガイダンス

Chapter JDK KeyListener keypressed(keyevent e ) keyreleased(keyevent e ) keytyped(keyevent e ) MouseListener mouseclicked(mouseeven

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

アプレットⅣ

Microsoft PowerPoint prog1_doc2.pptx

2

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

ガイダンス

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

public class MyFrame { private JPanel panel1; private JPanel panel2; private JPanel panel3; private JPanel panel4; private JLabel label1; private JTex

Microsoft PowerPoint - prog11.ppt

Java言語 第1回

以下に java.awt.graphics クラスの主なメソッドを示す (Graphics クラスの ) メソッド drawline(int x1, int y1, int x2, int y2) drawrect(int x, int y, int width, int height) fillr

ソフトウェア基礎演習 課題

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

Microsoft PowerPoint - swing2.ppt

Java言語 第1回

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

4 p.2 4 GUI return; public void mousepressed(mouseevent e) { /* 5 */ public void mousereleased(mouseevent e) { /* 5 */ public void mouseentered(mousee

Microsoft PowerPoint - swing3.ppt

アジェンダ 1 グラフィカルなインタフェース GUI(Graphical User Interface) の基礎 2 Swing を利用する Swing の基礎知識 2

I. (i) Java? (A). Foo_Bar (B). G day (C). 999 (D). Golgo13 (ii)? (A). Java public (B). Java (C). Java JavaScript (D). Java C Java C (iii)? (A). Java (

text_13.dvi

ガイダンス

ガイダンス

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

目 次 Java GUI 3 1 概要 クラス構成 ソースコード例 課題...7 i

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

Prog2_11th

Java 2 - Lesson01

Prog1_12th

問1

<4D F736F F F696E74202D AC C8899E D834F E >

:30 12:00 I. I V II. III. IV. ( a d) V. VI : A ActionListener aa addactionlistener AE ActionEvent K KeyListener ak addkeyliste

PowerPoint Presentation

Microsoft PowerPoint - prog13.ppt

Prog1_12th

Animals サンプル Step 1 動物の種類を指定しておいて クリックした場所に画像を貼り付ける < レイアウトについて > 前回は ラベルやボタンの位置を座標で設定した Absolute Layout を選んだためである レイアウトは どのようにボタンなどのコンポーネントを配置するかを決定す

Animals サンプル Step3 張り付けた動物の上をクリックすると それぞれの鳴き声で鳴く その鳴く間 一定時間 ( ここでは 1 秒間 ) 画像が別のものに変わる <アニメーションの基礎 : タイマーについて> アニメーションは アプリケーションが指定する間 一定間隔でどんどん画像をおきかえ

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

2

Microsoft PowerPoint - prog13.ppt

GUIプログラムⅣ

r3.dvi

r14.dvi

2008 e-learning T050050

Microsoft Word - Java4.DOC

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperforme

GUIプログラムⅡ

ソフトウェア開発方法論2

手書認識 グラフ描画 Step2-2 手書認識 : 認識結果を PaintPanel で描画する < 属性付き文字列 AttributedString> 標準出力では分かりにくいうえに認識結果を使えないので 認識するごとに PaintPanel に文字を描画することにする ここで 数式はただの文字列

GUIプログラムⅤ

PowerPoint プレゼンテーション

Chapter 20. [ ] ; [ ] = new [ ] ; Color colors [ ] = new Color[ 20 ]; // 20 Button operations [ ] = new Button[ 10 ]; // 10 colors[ 3 ] = new Color( 1

< F2D E E6A7464>

< F2D B825082CC96E291E82E6A7464>

Microsoft PowerPoint - OOP.pptx

Microsoft Word - 第七週Java講座.docx

4 p.2 4 GUI public void mousepressed(mouseevent e) { /* 5 */ public void mousereleased(mouseevent e) { /* 5 */ public void mouseentered(mouseevent e)

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

アプレットⅢ


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

Java言語 第1回

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperformed

I. (i) Java? (A). 2Apples (B). Vitamin-C (C). Peach21 (D). Pine_Apple (ii) Java? (A). Java (B). Java (C). Java (D). JavaScript Java JavaScript Java (i

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

:30 12:00 I. I VII II. III. IV. ( a d) V. VI : this==null, T == N A ActionListener A addactionlistener C class D actionperforme

Microsoft Word 年度情報コミュニケーション実験II(Ver0.9)c.docx

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

r2.dvi

II Java :30 12:00 I. I IV II. III. IV. ( a d) V. : this==null, T == N A ActionListener C class D actionperformed G getsource I implements K

< F2D825282CC947B909482CC A815B83682E6A>

ブロック崩し Step1 矢印キーで左右に動かせるパドルを描画する < パドルの表現方法 > パドルは java.awt パッケージの Rectangle という Java が用意しているクラスを使う これは四角形を表すクラスで 左上の点の座標と幅 高さをもっている (x, y) Rectangle

< F2D B838A835882CC8CF68EAE2E6A7464>

< F2D F B834E2E6A7464>

< F2D82518CC282CC D2E6A7464>

I HTML HashMap (i) (ii) :.java import java.net.*; import java.io.*; import java.util.hashmap; public class SimpleStopWatch { public static voi

JAVA入門


Transcription:

第 2 回 GUI コンポーネントのイベント処理 GUI Component Event Handling キーポイント イベント イベントリスナー イベント処理とは何か? ActionEventとActionListenerについて ItemEventとItemListenerについて TextEventとTextListenerについて KeyEventとKeyListenerについて AdjustmentEventとadjustmentListenerについて WindowEventとWindowListenerについて MouseEventとMouseListenerについて 1

イベント処理 (Event Handling) とは フレームにコンポーネントを配置するだけでは 機能を持たない コンポーネントが何のイベントを受け取るのか指定することにより GUI に機能を持たせることができる また イベントを受け取った際の処理をリスナーと呼ばれるクラスに記述することにより イベントを処理する Button object(s) ActionEvent ActionListener ActionEvent 2

ユーザー > インタフェースー > イベントリスナーー > アクション イベント発生 イベント取得 イベント処理 TextField object(s) イベント ActionListener アクション actionperformed() { ユーザ操作 Button object(s) ItemListener itemstatechanged() { Choice object(s) TextListener textvaluechanged() { Checkbox object(s) ユーザがボタン 6 をマウスでクリックした ボタン 6 がクリックされたことを ActionListener が認識する イベント処理メソッド actionperformed を呼ばれ イベント処理 ( この場合は電卓のテキストフィールドに 6 を表示 ) する

パッケージ java.awt.event( クラス ) クラス階層図 ActionEvent java.lang.object ContainerEvent ItemEvent java.util.eventobject TextEvent FocusEvent java.awt.awtevent AdjustmentEvent ComponentEvent PaintEvent WindowEvent java.lang.object +--java.util.eventobject +--java.awt.awtevent +--java.awt.event.actionevent InputEvent KeyEvent MouseEvent AWT イベントクラス 次に説明します

パッケージ java.awt.event ( インターフェース ) インターフェース階層図 抽象メソッド!! java.lang.object ActionListener ItemListener public void actionperformed(actionevent e) public void itemstatechanged(itemevent e) java.util.eventlistener TextListener KeyListener WindowListener public void textvaluechanged(textevent e) public void keytyped(keyevent e) public void keypressed(keyevent e) public void keyreleased(keyevent e) public void windowclosing(windowevent e) AWT イベントリスナーインタフェースクラス 次に説明します AdjustmentListener MouseListener MouseMotionListener public void adjustmentvaluechanged(adjustmentevent e) public void mouseclicked(mouseevent e) public void mousepressed(mouseevent e) public void mousereleased(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) public void mousedragged(mouseevent e) public void mousemoved(mouseevent e)

GUI コンポーネント イベントクラス イベントリスナーとイベントの処理メソッド TextField Button ActionEvent ActionListener public void actionperformed(actionevent e) Choice Checkbox List ItemEvent ItemListener public void itemstatechanged(itemevent e) TextArea TextEvent TextListener public void textvaluechanged(textevent e) Key KeyEvent KeyListener public void keytyped(keyevent e) public void keypressed(keyevent e) public void keyreleased(keyevent e) Window WindowEvent WindowListener public void windowclosing(windowevent e) Scrollbar AdjustmentEvent AdjustmentListener public void adjustmentvaluechanged(adjustmentevent e) public void mouseclicked(mouseevent e) Mouse MouseEvent MouseListener public void mousepressed(mouseevent e) public void mousereleased(mouseevent e) public void mouseentered(mouseevent e) public void mouseexited(mouseevent e) MouseMotionListener public void mousedragged(mouseevent e) public void mousemoved(mouseevent e)

ActionEvent の作成 イベント処理の流れを簡単に見るために ActionEvent を作成する import java.awt.event.*; // イベントをインポート import javax.swing.*; public class Practice02 { public static void main(string[] args){ JButton btn = new JButton("button"); // 対象となるコンポーネント ( この場合はボタン ) に addactionlistener メソッドを実行する // また 引数にはイベントを処理するリスナーのクラスを指定する btn.addactionlistener(new btnlistener()); //ActionEvent を処理するリスナーの実装 (ActionListener をインプリメントする ) class btnlistener implements ActionListener{ // イベントが発生した時に actionperformed メソッドが呼び出される public void actionperformed(actionevent e){ // ここにイベント処理を記述 7

ActionEvent の作成 (2) イベントを呼び出す元のクラスに ActionListener をインプリメントすることもできる import java.awt.event.*; import javax.swing.*; public class Practice02 implements ActionListener { Practice02(){ JButton btn = new JButton("button"); //ActionListener をインプリメントしているため 自クラスを渡す btn.addactionlistener(this); public void actionperformed(actionevent e){ // ここに処理を記述 8

ActionEvent の作成 (3) 実際にボタンのイベント処理を確認してみる public class Practice02 extends JFrame implements ActionListener { public static void main(string[] args){ new Practice02("EventTest"); public Practice02(String title){ settitle(title); setsize(300,350); setlocation(400,200); setlayout(new FlowLayout()); JButton btn1 = new JButton("button1"); btn1.addactionlistener(this); add(btn1); JButton btn2 = new JButton("button2"); btn2.addactionlistener(this); add(btn2); ボタンを動作させて コンソールの表示を確認して下さい setdefaultcloseoperation(jframe.exit_on_close); setvisible(true); public void actionperformed(actionevent e){ System.out.println(e.getActionCommand()); // 受け取ったActionEventをコンソールに表示 9

getactioncommand メソッド イベントの処理分けの手段として getactioncommand メソッド setactioncommand メソッドが用意されています public class Practice02_2 extends JFrame implements ActionListener { JLabel label; JPanel panel; public Practice02_2(String title){ JButton btn1 = new JButton("button1"); btn1.addactionlistener(this); JButton btn2 = new JButton("button2"); btn2.setactioncommand( ボタン 2 ); btn2.addactionlistener(this); panel = new JPanel(); panel.add(btn1); panel.add(btn2); label = new JLabel(""); add(panel,"north"); add(label,"center"); public void actionperformed(actionevent e){ label.settext(e.getactioncommand() + " が押されました "); ボタンを動作させて 画面の変化を確認して下さい 10

コマンド文字列を用いた条件分岐とタイムスタンプ actionperformed メソッドでコマンド文字列を用いた条件を記述できる また getwhen メソッドでタイムスタンプを利用することができる public Practice02_2(String title){ label = new JLabel(""); tlabel = new JLabel(""); add(panel,"north"); add(label,"center"); add(tlabel,"south"); public void actionperformed(actionevent e){ String cmd = e.getactioncommand(); if(cmd.equals("button1")){ label.settext(" ボタン 1 が押されました "); else if(cmd.equals("button2")){ label.settext(" ボタン 2 が押されました "); // タイムスタンプの利用 long time = e.getwhen(); ボタンを動作させ それぞれの機能を確認して下さい DateFormat df = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); String timest = df.format(new Date(time)); tlabel.settext(timest); 11

テキストフィールド ラジオボタン コンボボックスの利用 その他コンポーネントの利用を考える JTextField jtf,jtf_select; JLabel label,tlabel; ButtonGroup bg_sex; JRadioButton jrb[]; JComboBox jcb; public Practice02_3(String title){ public void actionperformed(actionevent e){ String cmd = e.getactioncommand(); jtf_select.settext("selected:" + cmd); // 選択されているラジオボタンを調べる場合 String sex = ""; for(int i=0;i<jrb.length;i++){ if(jrb[i].isselected()) sex = jrb[i].gettext(); // 特定のボタンが押された時の処理 if(cmd.equals("send")){ // ここに処理を記述 ボタンを動作させ コンポーネントの動作を確認して下さい // 画面のデザイン public Practice02(String title){ jtf = new JTextField(8); jtf.settext("hosei Taro"); bg_sex = new ButtonGroup(); jrb = new JRadioButton[2]; jrb[0] = new JRadioButton("male"); jrb[0].setselected(true); jrb[0].addactionlistener(this); jrb[1] = new JRadioButton("female"); jrb[1].addactionlistener(this); bg_sex.add(jrb[0]); bg_sex.add(jrb[1]); jcb = new JComboBox(); for(int i = 1; i < 5; i++){ jcb.additem(i); JButton btn1 = new JButton("SEND"); btn1.addactionlistener(this); jtf_select = new JTextField(20); jtf.settext(""); JPanel panel = new JPanel(); panel.add(jtf); panel.add(jrb[0]); panel.add(jrb[1]); panel.add(jcb); panel.add(btn1); panel.add(jtf_select); add(panel,"center");

ItemListener の作成 コンボボックスの選択などを監視する場合 ItemListener を利用する public class Practice02_3 extends JFrame implements ActionListener, ItemListener { JTextField jtf, jtf_select; public Practice02_3(String title){ public void actionperformed(actionevent e){ String cmd = e.getactioncommand(); jtf_select.settext(cmd); public void itemstatechanged(itemevent e) { jtf_select.settext("number changed to " + jcb.getselecteditem().tostring()); ボタンを動作させて テキストの表示を確認して下さい 13

MouseEvent の作成 MouseEvent を MouseListener インターフェースを用いてマウスイベントを処理します 実装に必要なメソッドは以下の 5 つで 異なるマウスの動作に対応します mouseclicked() : コンポーネント上でマウスがクリックされた時に呼び出される mousepressed() : コンポーネント上でマウスボタンが押されると呼び出される mousereleased() : コンポーネント上でマウスボタンが離されると呼び出される mouseentered() : コンポーネントの領域にカーソルが入ると呼び出される mouseexited() : コンポーネントの領域からカーソルが出ると呼び出される public void mouseclicked(mouseevent e){ public void mousepressed(mouseevent e){ public void mousereleased(mouseevent e){ public void mouseentered(mouseevent e){ public void mouseexited(mouseevent e){ 14

MouseEvent の作成 (2) 実際に MouseEvent を作成してみる JTextField jtf,jtf_mouse; public Practice02_3(String title){ this.addmouselistener(this); jtf_mouse = new JTextField(20); jtf.settext(""); マウスの動作で表示されているテキストが変わるのを確認する public void mouseclicked(mouseevent e){ //jtf_mouse.settext( mouseclicked ); // クリック処理の場合 public void mousepressed(mouseevent e){ jtf_mouse.settext("mousepressed"); public void mousereleased(mouseevent e){ jtf_mouse.settext("mousereleased"); public void mouseentered(mouseevent e){ jtf_mouse.settext("mouseentered"); public void mouseexited(mouseevent e){ jtf_mouse.settext("mouseexited"); また これの他にマウスのドラッグなどの操作を監視する MouseMothionListener というリスナーも用意されている 15

MenuBar の作成 MenuBar のアイテムのイベント処理も可能 JMenuBar jmb; JMenu menu_file; JMenuItem jmi_new,jmi_save,jmi_open; public Practice02_3(String title){ jmb = new JMenuBar(); menu_file = new JMenu("File"); jmi_new = new JMenuItem("New"); jmi_new.addactionlistener(this); menu_file.add(jmi_new); jmi_open = new JMenuItem("Open"); jmi_open.addactionlistener(this); menu_file.add(jmi_open); jmi_save = new JMenuItem("Save"); jmi_save.addactionlistener(this); menu_file.add(jmi_save); jmb.add(menu_file); setjmenubar(jmb); 16

MenuBar の作成 (2) MenuBar でも ActionCommand の設定ができる また setmnemonic() メソッドによって各コンポーネントにはショートカットキーの設定ができる public class Practice02 extends JFrame implements ActionListener, ItemListener { JMenuBar jmb; JMenu menu_file; JMenuItem jmi_new,jmi_save,jmi_open; public Practice02_3(String title){ //ActionCommand の設定 jmi_new.setactioncommand("file -> New"); jmi_open.setactioncommand("file -> Open"); jmi_save.setactioncommand("file -> Save"); // ショートカットキーの設定 ( 操作は Alt キー + 設定したキー ) menu_file.setmnemonic('f'); jmi_new.setmnemonic('n'); jmi_open.setmnemonic('o'); jmi_save.setmnemonic('s'); Alt キー + F キー -> N キーのキーボードでの操作が可能となる 17

Exercise 2 以下の要件を満たす GUI を Ex1BasicEvent という名前のクラスで作成して下さい 前回の講義で作成した Exercise1 のプログラムを利用して下さい ( 画面のデザイン ) メニューバー 画像を配置したツールバーを作成する画面下にボタンを配置する画面中央に各コンポーネントを配置する メニューアイテム ツールバーアイテム 各コンポーネントの ActionCommand を表示するテキストフィールドを作成する マウスイベントを表示するテキストフィールドを作成する 画面の背景色を変更するラジオボタンを作成する 画面内の各コンポーネントの ActionCommand は各自で考えて作成して下さい講義スライドにあるように メニューバーのアイテムにショートカットキーを設定して下さい 18