このようなインターフェイスは、実装してオブジェクトを作成し、そのオブジェクトをイベント ソースに登録すると便利になります。ここで登録の部分が重要です。マウス クリック イベントに登録すると、オブジェクトはそれを受け取ります。
基本的に、これらのインターフェイスは同様のイベントを処理するために使用されるため、似ていますが、最終的には、登録したイベントについてのみ通知されます。ここには魔法はありません。イベント ソースは、何らかのイベントに関心のあるリスナーのコレクションを内部的に保持し、そのようなイベントが発生すると、コレクションを反復処理してリスナー メソッドを呼び出します。
たとえば、あなたが言及したマウス リスナー インターフェイスには、いくつかのメソッドがあります。
public interface MouseListener extends EventListener {
public void mouseClicked(MouseEvent e);
public void mousePressed(MouseEvent e);
...
}
クラスの一部を見るjava.awt.Component
と、正しいメソッドを呼び出すイベント ソースであることがわかります。
public abstract class Component implements ImageObserver, MenuContainer,
Serializable
{
...
protected void processMouseEvent(MouseEvent e) {
MouseListener listener = mouseListener;
if (listener != null) {
int id = e.getID();
switch(id) {
case MouseEvent.MOUSE_PRESSED:
listener.mousePressed(e); // invoking a specific listener's method
break;
case MouseEvent.MOUSE_RELEASED:
listener.mouseReleased(e);
break;
...
}