Capturar eventos de mouse em componentes que se sobrepõe

Olá. Eu tenho dois jpanel, ambos capturam eventos do mouse (mouseListener e mouseMotionListener).
Além do mais, um dos jpanel adiciona o outro. Botei o exemplo resumido abaixo.

JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();

panel1.add(panel2);

panel1.addMouseListener( new MouseListener() {...} );
panel2.addMouseListener( new MouseListener() {...} );

Ambos funcionam muito bem, o problema é que quando eu gero um evento do mouse, apenas um dos jpanel recebe o evento (o panel2).
Isso é algum problema de hierarquia ou coisa assim? Eu preciso que ambos processem o evento.

Agradeço sugestões.

Se o painel 2 foi clicado, só ele recebe os eventos (mesmo que haja um “super painel” que o contém).

Você realmente precisa que ambos recebam o evento?

Sim, preciso fazer um tratamento diferenciado para os diferentes eventos de mouse em ambos. No melhor dos casos, eu posso me virar tratando o evento no painel pai, mas só o filho está recebendo-o. Assim complica.

Você pode criar um método na sua classe para centralizar o tratamento de cliques. Por exemplo:

private void trataEvento(MouseEvent e) {
// faz o que for preciso
}

E quando qualquer um dos painéis fossem pressionados, eles chamariam esse método passando o MouseEvent.

Assim, sempre que eles forem pressionados esse método será chamado e você pode saber quem originou o evento com o método getSource() de MouseEvent.

Que tal?

Legal, gostei. Vai se encaixar bem no que eu tenho. Valeu.