【发布时间】:2014-09-30 20:30:40
【问题描述】:
我有一个 JPanel parent 和一个 JPanel child。我在父级中添加了一个 MouseListener,在子级中添加了另一个。代码如下:
public void init(MouseListener listenerForParent, MouseListener listenerForChild)
{
JPanel parent = new JPanel("Parent");
JPanel child = new JPanel("Child");
parent.add(child);
parent.addMouseListener(listenerForParent);
...
}
到目前为止一切正常。
当我单击时,listenerForParent 的 mouseClicked(...) 正在调用
我正在接收上述代码的事件,即使我单击 child JPanel,也会调用 listenerForParent 的 mouseClicked(...)。
但问题就在这里。当我在child JPanel 中添加监听器时:
public void init(MouseListener listenerForParent, MouseListener listenerForChild)
{
JPanel parent = new JPanel("Parent");
...
parent.addMouseListener(listenerForParent);
child.addMouseListener(listenerForChild); // added new line i.e. adding MouseListener in child
}
现在,当我单击 child JPanel 区域时,只有 listenerForChild 的 mouseClicked(...) 正在调用。
是否可以在两个侦听器中获取事件。
在哪里,我无法修改给定的 MouseListeners。 即我无法更改 mouseClicked(...),因为它是由我没有来源的其他类提供给我的。因此我不能使用dispatchEvent(AWTEvent e) 方法。
提前致谢。
【问题讨论】:
标签: java swing events awt mouseevent