swt中如何实现label鼠标拖动位置?label跟随鼠标显示烦请高手指教万分感谢!本人初学,最好有源码讲解!

解决方案 »

  1.   

    对label上实现鼠标按下,移动事件,监听鼠标坐标x和y的变化,然后用label的旧坐标加上鼠标x,y坐标的变化值来设置label的坐标。
      

  2.   

    跟button的鼠标事件一样吧,我用的是swing,没用过swt,不过理论上是一样的。
      

  3.   

    自己试了一下,感觉一般.附段源码...
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;class Frame1 extends JFrame {
        public Frame1() {
            try {
                jbInit();
            } catch (Exception exception) {
                exception.printStackTrace();
            }
        }    private void jbInit() throws Exception {
    setBounds(300,300,300,200);
    setVisible(true);
            getContentPane().setLayout(null);
            jLabel1.setText("jLabel1");
            jLabel1.setBounds(new Rectangle(168, 156, 89, 20));
            this.getContentPane().add(jLabel1);
            this.addMouseMotionListener(new Frame1_this_mouseMotionAdapter(this));
        }    public static void main(String[] args) {
            Frame1 frame1 = new Frame1();
        }    JLabel jLabel1 = new JLabel();
        public void this_mouseMoved(MouseEvent e) {
            jLabel1.setLocation(e.getX(),e.getY());
        }
    }
    class Frame1_this_mouseMotionAdapter extends MouseMotionAdapter {
        private Frame1 adaptee;
        Frame1_this_mouseMotionAdapter(Frame1 adaptee) {
            this.adaptee = adaptee;
        }    public void mouseMoved(MouseEvent e) {
            adaptee.this_mouseMoved(e);
        }
    }