importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
classWinextendsJFrameimplementsMouseMotionListener,MouseListener
{
JButtonbutton[]=newJButton[6];
JTextFieldtext;
JLayeredPanelayerPane;
Containercon;
Win()
{
layerPane=newJLayeredPane();
layerPane.setLayout(newFlowLayout());
con=getContentPane();
con.add(layerPane,BorderLayout.CENTER);
for(inti=0;i
{
button[i]=newJButton("用鼠标拖动我"+i);
button[i].addMouseMotionListener(this);
button[i].addMouseListener(this);
layerPane.add(button[i],JLayeredPane.DEFAULT_LAYER);
}
con.addMouseMotionListener(this);
setBounds(10,10,300,300);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
publicvoidmouseMoved(MouseEvente){}
publicvoidmouseDragged(MouseEvente)
{
JComponentsource=(JComponent)e.getSource();
layerPane.setLayer(source,JLayeredPane.DRAG_LAYER);
intx=e.getX();
inty=e.getY();
java.awt.Pointpoint=SwingUtilities.convertPoint(source,x,y,con);
intx1=(int)point.getX();//获取鼠标指针在容器坐标系中的坐标。
inty1=(int)point.getY();
intw=source.getSize().width;
inth=source.getSize().height;
source.setLocation(x1-w/2,y1-h/2);//组件中心跟随鼠标指针移动。
}
publicvoidmouseReleased(MouseEvente)
{
JComponentsource=(JComponent)e.getSource();
layerPane.setLayer(source,JLayeredPane.DEFAULT_LAYER);
}
publicvoidmousePressed(MouseEvente){}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmouseClicked(MouseEvente){}
}
publicclassExample
{publicstaticvoidmain(Stringargs[])