У меня есть главное окно:распространения события Java перестало
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 и не распространяется на родителя.
Как остановить событие от потребления ребенком?
Вот странно ... Я помню, что Противоположная проблема, когда родитель был потребляющего ребенка связаны события мыши – TheLQ