que tienen una ventana principal:Java la propagación de eventos detenido
public class MainPanel extends JFrame implements MouseListener {
public MainPanel() {
setLayout(new FlowLayout());
setDefaultCloseOperation(EXIT_ON_CLOSE);
addMouseListener(this);
ChildPanel child = new ChildPanel();
add(child);
JPanel spacer = new JPanel();
spacer.setPreferredSize(new Dimension(50, 50));
add(spacer);
pack();
setLocationRelativeTo(null);
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Mouse click event on MainPanel");
}
}
Y un niño JPanel:
public class ChildPanel extends JPanel implements MouseListener {
public ChildPanel() {
setBackground(Color.RED);
setPreferredSize(new Dimension(200, 200));
//addMouseListener(this);
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Mouse click event on ChildPanel");
}
}
Con la llamada a addMouseListener
comentado en el panel de niño, el padre recibe eventos de clic cuando Hago clic en cualquier parte de la ventana, incluso en el niño. Si elimino el comentario de esa llamada y hago clic en el panel secundario, solo, el elemento secundario recibe el evento click y no se propaga al elemento primario.
¿Cómo evito que el niño consuma el evento?
Eso es raro ... Recuerdo haber tenido el problema opuesto, donde el padre estaba consumiendo los eventos de ratón ligado niño – TheLQ