У меня есть главное окно:
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");
}
}
И ребенок 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");
}
}
С комментарием к addMouseListener
, закомментированным на дочерней панели, родитель получает события щелчка, когда я щелкаю в любом месте окна, в том числе и на дочернем. Если я раскомментирую этот вызов и нажму на дочернюю панель, только дочерний объект получит событие click, и оно не будет распространено на родительский.
Как я могу предотвратить употребление этого события ребенком?