 import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MouseDemo extends JFrame implements MouseListener {
JPanel mp = null;
JButton j1 = null;
int x = 15;
int y = 15;
public static void main(String[] args) {
MouseDemo mo = new MouseDemo();
}
public MouseDemo() {
mp = new JPanel();
j1 = new JButton("移动");
this.setSize(500, 500);
this.setTitle("min");
this.add(mp);
j1.setBounds(15, 15, 50, 50);
this.getContentPane().add(j1);
this.getContentPane().setLayout(null);
j1.addMouseMotionListener(new MouseMotionAdapter() {
// MouseMotionAdapter类里面只有以下两个方法
public void mouseDragged(MouseEvent e) {
// 鼠标按键在组件上按下并拖动时调用。在释放鼠标按键前,鼠标拖动事件被连续地传递到首先发起该事件的组件(而不管鼠标位置是否处于该组件的边界内)。
// j1.move(e.getX(), e.getY()); 这个方法已经过时了
j1.setBounds(e.getX(), e.getY(), j1.getWidth(), j1.getHeight());
}
public void mouseMoved(MouseEvent e) {
// 鼠标按键在组件上移动(无按键按下)时调用。
}
});
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setVisible(true);
}
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
}
其实我也不懂这个,刚才查了下JDK API就知道了,MouseMotionAdapter类实现了MouseMotionListener接口,而这里面只有两个方法。在里面设置按钮移动就可以了,经测试是可以跟着鼠标移动的,不知道我这个方法对不对,多多指教,谢谢 |