Manipular e gerenciar eventos entre componentes

Eu criei um componente X baseado em JPanel que encapsula toda a lógica de exibição de imagens. No entanto, este componente X é parte de um outro componente Y. Queria alterar algumas propriedades do componente Y assim que o usuário clicasse no componente X. Penso que a melhor maneira de fazer isso sem gambiarra, seria criar um evento próprio deste componente X que possa ser capturado e tratado no componente Y. Ou seja, o usuário clicando na imagem, eu queria gerar um evento do tipo, sei lá, EventoDeImagemSelecionada. Então, no componente Y eu adicionaria um listener que escutasse eventos deste tipo e os tratasse…Tenho 3 perguntas:
1-Tem lógica isso?
2-É a melhor forma de gerar modificações no componente Y a partir de mudanças no componente X?
3-Como faço isso? Nunca criei eventos e listeners…Alguém tem um exemplo?

Bom…Encontrei esse exemplo aqui. Pelo que vi posso fazer o que quero com ele:
http://blog.rollingwithcode.com/2009/04/criando-seus-proprios-eventos-no-java.html
Só queria ver se essa é a melhor abordagem…Vi que o sujeit disse que pode ser feito com o padrão Observer…Neste meu caso também pode? Vale a pena?