last modified: Jun./30th/2002; Jan./22nd/2002
アプリケーションに対してユーザの操作に対応した動作を指定できます。ユーザのアクションはイベントとしてアプリケーションに受けとられ、イベントに対応した動作を記述できます。アクションはコンポーネントなどのオブジェクトであるイベントソース (Event Source)から受け取られ、対応した動作を記述したイベントリスナー (Event Listner) に渡されます。イベント自身はオブジェクトであり、イベントソースを識別する情報を含みます。
Act that results in the event | Listener type |
---|---|
ボタンクリック、テキストフィールドにフォーカス中にReturnキー、メニュー項目の選択 | ActionListener |
フレーム(メインウィンドウ)の終了 | WindowListener |
コンポーネントのクリック | MouseListener |
コンポーネント上にマウスカーソルを移動 | MouseMotionListener |
コンポーネントが可視化 | ComponentListener |
コンポーネントがキーボード入力に対してフォーカス | FocusListener |
テーブルやリストの選択が変更 | ListSelectionListener |
発生したイベントはオブジェクトとして扱われ、発生したイベントの種類に応じたイベントリスナーが受け取って処理します。イベントが発生したオブジェクトをイベント・ソースと呼び、発生したイベントを受け取るオブジェクトをイベント・リスナーと呼びます。
例えば、マウスの動作を処理するためのイベント・リスナーは MouseListener
インタフェースを実装します。例えば、コンポーネントにマウスが入ると、このリスナーの mouseEntered(MouseEvent e)
が呼び出されます。コンポーネントにこのリスナーを追加するメソッドは、addMouseListener(MouseListener l)
です。
また、ボタンのクリックなど、典型的なアクションを処理するためのリスナーは ActionListener
インタフェースを実装します。イベントが発生すると、 actionPerformed(ActionEvent e)
が呼び出されます。コンポーネントにこのリスナーを追加するメソッドは、 addActionListener(ActionListener l)
です。
次に挙げるのは、自分自身がリスナークラスの場合です。
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) { ... } }
次に挙げるのは、イベント処理するクラスが別途定義されている場合です。
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) { ... } }
次に挙げるのは、イベント処理のクラスが内部クラスとして実装しているものです。
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) { ... } } }