比如鼠标按在一个label上时候,label会跟着鼠标光标一起移动,是在mousepressed里写吗?
我试了下,坐标老会搞混掉
public class Bird extends JLabel implements MouseListener { //public void mousePressed(MouseEvent e) {
Point pointBird=this.getLocation;
Point pointMouse=e.getLocation;
if(pointBird.distance(507.0, 360.0)<100.0) {
this.setLocation(pointMouse);
}
}
}
结果pointBird得到的是窗口里的坐标,pointMouse得到的是label中的坐标(差别很大),而且if语句执行一次就不执行了,就是说label就动了一下,不是跟着动的,小弟请教大家哦!!!最好贴下思路代码
我试了下,坐标老会搞混掉
public class Bird extends JLabel implements MouseListener { //public void mousePressed(MouseEvent e) {
Point pointBird=this.getLocation;
Point pointMouse=e.getLocation;
if(pointBird.distance(507.0, 360.0)<100.0) {
this.setLocation(pointMouse);
}
}
}
结果pointBird得到的是窗口里的坐标,pointMouse得到的是label中的坐标(差别很大),而且if语句执行一次就不执行了,就是说label就动了一下,不是跟着动的,小弟请教大家哦!!!最好贴下思路代码
他需要重写两个方法,其中mouseMoved()方法中,是当你移动鼠标是,需要做什么事;mouseDragged()方法中,是当你拖动鼠标是,做什么事。具体形式是下面。public class Bird extends JLabel implements MouseListener { //....
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
}}
package com.yangxiutian;import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;import javax.swing.JFrame;
import javax.swing.JLabel;public class Test1 extends JFrame{
private static final long serialVersionUID = -2902215570723051966L;
{
this.setBounds(400, 300, 400, 200);
this.setLayout(null);
this.setVisible(true);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
final JLabel label=new JLabel("日本滚出钓鱼岛!");
label.setSize(300, 30);
label.setFont(new Font("华文彩云",Font.ITALIC,30));
this.addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent e) {
// TODO Auto-generated method stub
label.setLocation(e.getX(), e.getY());
}
@Override
public void mouseDragged(MouseEvent e) {
// TODO Auto-generated method stub
}
});
this.add(label);
}
public static void main(String[] args) {
new Test1();
}}
其中mousePressed方法中记录下最初的坐标,mouseReleased记录最终坐标
而mouseDragged根据变化来改变坐标