イベント

last modified: Jun./30th/2002; Jan./22nd/2002

アクション・イベントとなんだろうか

アプリケーションに対してユーザの操作に対応した動作を指定できます。ユーザのアクションはイベントとしてアプリケーションに受けとられ、イベントに対応した動作を記述できます。アクションはコンポーネントなどのオブジェクトであるイベントソース (Event Source)から受け取られ、対応した動作を記述したイベントリスナー (Event Listner) に渡されます。イベント自身はオブジェクトであり、イベントソースを識別する情報を含みます。

Act that results in the eventListener type
ボタンクリック、テキストフィールドにフォーカス中にReturnキー、メニュー項目の選択ActionListener
フレーム(メインウィンドウ)の終了WindowListener
コンポーネントのクリックMouseListener
コンポーネント上にマウスカーソルを移動MouseMotionListener
コンポーネントが可視化ComponentListener
コンポーネントがキーボード入力に対してフォーカスFocusListener
テーブルやリストの選択が変更ListSelectionListener

発生したイベントはオブジェクトとして扱われ、発生したイベントの種類に応じたイベントリスナーが受け取って処理します。イベントが発生したオブジェクトをイベント・ソースと呼び、発生したイベントを受け取るオブジェクトをイベント・リスナーと呼びます。

  1. イベントを処理するアクション・リスナー・オブジェクトのために、イベント・タイプに応じたインタフェースを実装したクラスを作成します。
  2. イベントが発生するオブジェクトに、発生したアクション・イベントを受け取るための、イベント・リスナーを登録します。
  3. 実行時には、イベントが発生すると、指定されたイベント・リスナーの、関連するメソッドが自動的に呼び出され、イベントが引数として渡されます。

例えば、マウスの動作を処理するためのイベント・リスナーは MouseListener インタフェースを実装します。例えば、コンポーネントにマウスが入ると、このリスナーの mouseEntered(MouseEvent e) が呼び出されます。コンポーネントにこのリスナーを追加するメソッドは、addMouseListener(MouseListener l) です。

また、ボタンのクリックなど、典型的なアクションを処理するためのリスナーは ActionListener インタフェースを実装します。イベントが発生すると、 actionPerformed(ActionEvent e) が呼び出されます。コンポーネントにこのリスナーを追加するメソッドは、 addActionListener(ActionListener l) です。

イベントの実装方法

イベント処理その1

次に挙げるのは、自分自身がリスナークラスの場合です。

class MyPanel extends JPanel implements MouseListener {
	MyPanel() {
		...
		JButton button = new JButton();
		button.addMouseListener(this);
		...
	}

	// 以下 MouseListener の実装
	public void mouseClicked(MouseEvent e) {
		...
	}
	public void mouseEntered(MouseEvent e){
		...
	}
	public void mouseExited(MouseEvent e) {
		...
	}
	public void mousePressed(MouseEvent e) {
		...
	}
	public void mouseReleased(MouseEvent e) {
		...
	}
}

イベント処理その2

次に挙げるのは、イベント処理するクラスが別途定義されている場合です。

class MyFrame extends JFrame {
	public static void main(String[] args) {
		...
		EventHandler l = new EventHandler();
		JButton button = new JButton();
		button.addActionListener(l);
		...
	}
}

class EventHandler implements ActionListener {
	public void actionPerformed(ActionEvent e) {
		...
	}
}

イベント処理その3

次に挙げるのは、イベント処理のクラスが内部クラスとして実装しているものです。

class MyFrame extends JFrame {
	public static void main(String[] args) {
		...
		EventHandler l = new EventHandler();
		JButton button = new JButton();
		button.addActionListener(l);
		...
	}

	class EventHandler implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			...
		}
	}
}


Copyright © 2001-2002 SUGAI, Manabu. All Rights Reserved.
SEO [PR] 爆速!無料ブログ 無料ホームページ開設 無料ライブ放送