关于事件监听机制的问题

我的问题是为什么f.addWindowListener(new MyWin());会调用MyWin类的中windowClosing(WindowEvent e)方法,它是怎么调用的?原理是什么?
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Event;
public class AwtDemo {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Frame f=new Frame("my awt");
    f.setSize(500,400);
    f.setLocation(300,200);
    f.setLayout(new FlowLayout());
    Button b=new Button("我是一个按钮");
    f.add(b);
    f.addWindowListener(new MyWin());
    f.setVisible(true);

}

}
class MyWin implements WindowListener {

public void windowClosing(WindowEvent e) {
    // TODO Auto-generated method stub
    System.out.println("退出");
    System.exit(0);
}
}

callback,你注册了MyWIn。
它被调用时就会直接找windowClosing这个函数。由WindowListener控制。