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) {
...
}
}
}