TopPage > 演習課題 > 演習2-2 イベント処理

イベント処理

まず,下記のプログラムをダウンロードしてください.

fileGuiEventTest.java ダウンロードソースコードファイルを見る

説明

このプログラムは,演習2-1のプログラムにイベント処理の機能を実装したものです. (名前入力機能など一部を省略しています)

イベントとは,Javaプログラム上でマウスやキーボードを操作したことを指しており,イベントが発生すると,イベントリスナー(イベントハンドラ)と呼ばれるメソッドが,イベントに応じた処理を実行します.

  • 26〜27行目:各ボタンに対して,マウスイベントのリスナーを設定している.
  • 28行目:各ボタンに対して,ボタンの番号を格納している.

イベントハンドラ

  • 8行目の下記の部分により,いくつかのイベントハンドラを追加しています.
    implements MouseListener,MouseMotionListener
    • インタフェースを実装している」というのですが,詳細は省きます.
  • 例えば38〜44行目の,mouseClickedメソッドは,コンポーネントがクリックされた時に呼び出されるイベントハンドラです.
    • 40行目は,クリックされたコンポーネントを取得しています.
    • 41行目は,クリックされたコンポーネントから,ボタン番号を取り出しています.
    • 42行目は,ボタン番号の前に*(アスタリスク)をつけて,クリックされたことを明示します.
MouseListenermouseClicked(MouseEvent e)マウスでクリックしたときの処理
mouseEntered(MouseEvent e)マウスがオブジェクトに入ったときの処理
mouseExited(MouseEvent e)マウスがオブジェクトから出たときの処理
mousePressed(MouseEvent e)マウスでオブジェクトを押したときの処理
mouseReleased(MouseEvent e)マウスで押していたオブジェクトを離したときの処理
MouseMotionListenermouseDragged(MouseEvent e)マウスでオブジェクトをドラッグしているときの処理
mouseMoved(MouseEvent e)マウスがオブジェクト上で移動したときの処理
 
よくあるミスに注意!
インタフェースの実装により追加されたイベントハンドラは,省略(削除)することができません

確認

  • 各マウスイベントの違いと発生タイミングについて確認しましょう.
    • 例えば,mouseClickedとmousePressedの違いに注意!
  • 37行目から81行目をコメントアウト/* と */ で囲む)して,無効化してみてください.
    • エラーが出ますね.つまり,省略はできません.これらの関数は必ず記述しましょう.
      ※最終課題に向けて…  
      余分な処理(例:「マウスが入った」などの表示)を止めたいときは
       /*
        public void mouseEntered(MouseEvent e) {
          System.out.println("マウスが入った");
        }
       */
      ではなく
        public void mouseEntered(MouseEvent e) {
          //System.out.println("マウスが入った");
        }
       としてみてください.
  • 関数全体を消すではなく,その中の処理を変更してください.

練習

アスタリスクマーク(*)のついたボタンを再度クリックすると,アスタリスクが消えるようにプログラムを変更してください.

ヒント

  • JButtonオブジェクトで使用できるgetText()を使うと,ボタンのテキストを取得できます.(String型の文字が取得できます)
    • 例)) 「JButton型のTestButton」に書いてある文字列が取得したい⇒TestButton.getText();
  • 「*マークがあるかどうか」でボタンのテキストを上書きしたいですね.
    • この判定には,いくつか方法があります.
    • ボタンの配列番号や,ボタンのテキストを用いて,よく考えてみましょう.
 

next.gif 次の演習(2-3)


添付ファイル: fileGuiEventTest.java 2081件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   一覧 単語検索 最終更新     最終更新のRSS
Last-modified: 2016-08-29 (月) 20:02:22 (2797d)