Criação de Eventos

Olá!

Estou querendo entender como é que os eventos são implementados no java (não quero saber como são utilizados e sim qual a linha do pensamento de suas implementações).
Corrijam-me se eu estiver errado, mas pelo que percebi todos os eventos são compostos, analógicamente, dessa forma:
KeyListener: Interface que deve ser implementadas para se implementar os seus métodos;
KeyAdapter: Classe abstrata que deve ser entendida para se implementar os seus métodos;
KeyEvent: Classe que contém campos e métodos referentes ao evento em questão. É passado como parâmetro nas classes acima citadas.

Todos os outros eventos seguem a mesma linha de pensamento (Listener, Adapter e Event, mudando apenas à parte anterior da nomenclatura. Exemplo: MouseListener, MouseAdapter, MouseEvent).

A minha maior dúvida é como essas classes identificam quando o evento ocorre. Já olhei nos códigos fontes, mas não consigo identificar a parte do código que captura o evento.

Se alguém tiver uma explicação, um exemplo e/ou um bom tutorial, por favor, coloque aqui.
Aguardo a colaboração de vocês.
Obrigado.

Vou responder de novo: :stuck_out_tongue:

http://www.portaljava.com/home/modules.php?name=Forums&file=viewtopic&t=32966

O tratamento de eventos no Java é implementado atraves de um Design Pattern chamado Observer:


O ideia do Observer é criar observadores de determinadas classes, assim que ocorre algo relevante que interesse a um observador, este é notificado, assim, quando ocorre um evento em um componente, os observadores (no Swing/AWT são chamados de listeners), são notificados, porem a forma como esses eventos são efetivamente capturados não importa ao observador, no caso do Swing/AWT provavelmente isso é implementado em codigo nativo.

obs.: o padrão Observer não se aplica somente a isso, e sim a qualquer coisa onde classes clientes tenham que ser notificadas de alguma mudança de estado na classe observada.