Ich habe ein Hauptfenster:Java Ereignispropagierung gestoppt
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");
}
}
Und ein Kind 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");
}
}
Mit dem Aufruf von addMouseListener
in der Kindertafel kommentiert, erhält die übergeordneten Ereignisse klicken, wenn Ich klicke irgendwo in das Fenster, auch auf das Kind. Wenn ich diesen Aufruf auschecke und auf das untergeordnete Bedienfeld klicke, nur, erhält das untergeordnete Element das Klickereignis und es wird nicht an das übergeordnete Element weitergegeben.
Wie kann ich verhindern, dass das Ereignis vom Kind konsumiert wird?
Das ist seltsam ... Ich erinnere mich, das umgekehrte Problem, wo die Eltern das Kind gebunden Mausereignisse raubend – TheLQ