JPanel的鼠标事件监听器,如果有多个JPanel,怎么不能内层处理完后,没有向上传递呢,
比如:
JPanel p1;
JPanel p2;
p2是p1的父级,p2.getParent()方法可以取得到
我在p1内处理了mouseDragged事件,p2就接收不到mouseDragged事件了,怎么办,
怎么样才能让它向上传递呢,
p1处理事件完后继续也能让在p2内的相同事件也能接收到。
比如:
JPanel p1;
JPanel p2;
p2是p1的父级,p2.getParent()方法可以取得到
我在p1内处理了mouseDragged事件,p2就接收不到mouseDragged事件了,怎么办,
怎么样才能让它向上传递呢,
p1处理事件完后继续也能让在p2内的相同事件也能接收到。
楼主【chensjmail】截止到2008-07-11 16:30:28的历史汇总数据(不包括此帖):
发帖的总数量:11 发帖的总分数:470 每贴平均分数:42
回帖的总数量:119 得分贴总数量:45 回帖的得分率:37%
结贴的总数量:1 结贴的总分数:100
无满意结贴数:0 无满意结贴分:0
未结的帖子数:10 未结的总分数:370
结贴的百分比:9.09 % 结分的百分比:21.28 %
无满意结贴率:0.00 % 无满意结分率:0.00 %
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;public class TransferEvent extends JFrame { private JPanel panel1 = new JPanel(); private JPanel panel2 = new JPanel(); public TransferEvent() {
this.panel1.setPreferredSize(new Dimension(150, 150));
this.panel1.setBackground(Color.RED);
this.panel2.setPreferredSize(new Dimension(50, 50));
this.panel2.setBackground(Color.BLUE);
this.panel1.add(this.panel2);
this.getContentPane().add(this.panel1); this.panel1.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
super.mousePressed(e);
System.out.println("panel1 mousePressed");
MouseEvent e1 = SwingUtilities.convertMouseEvent(panel1, e, panel2);
panel2.dispatchEvent(e1);
}
});
this.panel2.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
super.mousePressed(e);
System.out.println("panel2 mousePressed");
}
});
} /**
* @param args
*/
public static void main(String[] args) {
TransferEvent te = new TransferEvent();
te.setVisible(true);
te.pack();
te.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}}
parent.dispatchEvent(new MouseEvent(parent,e.getID(),e.getWhen(),e.getModifiers(),mousePosition.x,mousePosition.y,e.getClickCount(),e.isPopupTrigger()));
你的:
parent.dispatchEvent(SwingUtilities.convertMouseEvent(e.getComponent(), e, parent));还有一个贴,你去回,一起给分