java鼠标拖动事件问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 15:30:29
请高手看看下面的程序,设置按钮坐标的地方如果改成相对事件源,拖的时候就会出现两个按钮,这是怎么回事啊?请高人指点
import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Task_6 extends Applet implements MouseMotionListener{
Button b;
public Task_6(){
resize(500,400);
b = new Button("拖我");
b.addMouseMotionListener(this);
add(b);
setVisible(true);
}

public void mouseDragged(MouseEvent e){
//b.setLocation(e.getPoint());
b.setLocation(e.getLocationOnScreen());
//b.setLocation(e.getX(),e.getY());
b.setLocation(e.getXOnScreen()-10,e.getYOnScreen()-50);
//System.out.println(e.getX()+e.getY());
}

@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
//b.setLocation(e.getPoint());
}
}

你是要使按钮能拖动吗?
不应该这样做。
具体做法是:
在mousePressed里,记下此时鼠标对于按钮的坐标。
在mouseDragged里,把按钮位置改变到此时鼠标对于窗口的坐标平移刚才记下的坐标。