我有一個主窗口: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
,父收到單擊事件時我點擊窗口中的任何地方,包括孩子。如果我取消註釋該電話並點擊子面板,只有孩子接收到點擊事件,並且不傳播給父母。
如何阻止該事件被兒童消耗?
那怪異的......我記得有當父母被消耗在孩子束縛的鼠標事件 – TheLQ 2010-08-31 01:01:09