package bao;import java.awt.*;
import java.awt.event.*;
import javax.swing.* ;public class ImageMoveTest extends JPanel implements MouseListener{
private Image img = Toolkit.getDefaultToolkit().createImage(ImageMoveTest.class.getResource("逍遥背面.gif"));
private static double RATE = 6.0; //记录鼠标点击的位置
Point current = new Point();//Poin 是记录当前的鼠标坐标的值
//图片的位置
Point last = new Point();//记录当前图片的鼠标值
int subX = last.x - current.x;
int subY = current.y - last.y;
private double x = 0;
private double y = 0;
//x,y 方向的速度
private double xRate = 0.1;
private double yRate = 0.0;
private double rateX = xRate;
private Timer timer;
/** Creates a new instance of ImageMoveTest */
public ImageMoveTest() {//第4步
addMouseListener(this);
timer = new Timer(30,new ActionListener(){//第5步
public void actionPerformed(ActionEvent e) {
move();//第6步
repaint();//第12步
}
});
}
private void move()//第7步
{
if(current.distance(last)<RATE){//第8步
//当图片到达点击位置时,停止运动
timer.stop();//timer停止
last.setLocation(x,y);
return;
}
if(current.x<last.x&¤t.y<last.y-20)
{
System.out.println("在左上");
}
x += xRate;//第9步
y += yRate;//第10步
last.setLocation(x,y);//第11步
System.out.println("X:"+x+" Y:"+y);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(img,last.x-29 ,last.y-85,this);
} public void mouseClicked(MouseEvent e) {
} public void mousePressed(MouseEvent e) {
timer.start();//运行timer
current = e.getPoint(); //current获得鼠标的坐标
double distance = current.distance(last);//鼠标的坐标跟last(图片)的坐标差距
xRate = (current.getX() - last.getX())/distance*RATE;//xRate=鼠标的X坐标-图片的X坐标/distance(两者之间差距)*(RATE)6.0
yRate = (current.getY() - last.getY())/distance*RATE;//tRate=鼠标的Y坐标-图片的Y坐标/distance(两者之间差距)*(RATE)6.0
} public void mouseReleased(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
}
public static void main(String[] args){
JFrame frame = new JFrame();//第1步
frame.setSize(500,500);//第2步
frame.getContentPane().add(new ImageMoveTest(),BorderLayout.CENTER);//第3步
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}先看上面代码
上面的代码实现 鼠标点击一个地方 图片就移动过去!!但是有个地方需要高手帮忙
就是 在移动图片时
判断角度 就是
鼠标点击的地方 和图片的地方比较一下!
得到鼠标点击的地方是图片的方向度数 顺时针````
import java.awt.event.*;
import javax.swing.* ;public class ImageMoveTest extends JPanel implements MouseListener{
private Image img = Toolkit.getDefaultToolkit().createImage(ImageMoveTest.class.getResource("逍遥背面.gif"));
private static double RATE = 6.0; //记录鼠标点击的位置
Point current = new Point();//Poin 是记录当前的鼠标坐标的值
//图片的位置
Point last = new Point();//记录当前图片的鼠标值
int subX = last.x - current.x;
int subY = current.y - last.y;
private double x = 0;
private double y = 0;
//x,y 方向的速度
private double xRate = 0.1;
private double yRate = 0.0;
private double rateX = xRate;
private Timer timer;
/** Creates a new instance of ImageMoveTest */
public ImageMoveTest() {//第4步
addMouseListener(this);
timer = new Timer(30,new ActionListener(){//第5步
public void actionPerformed(ActionEvent e) {
move();//第6步
repaint();//第12步
}
});
}
private void move()//第7步
{
if(current.distance(last)<RATE){//第8步
//当图片到达点击位置时,停止运动
timer.stop();//timer停止
last.setLocation(x,y);
return;
}
if(current.x<last.x&¤t.y<last.y-20)
{
System.out.println("在左上");
}
x += xRate;//第9步
y += yRate;//第10步
last.setLocation(x,y);//第11步
System.out.println("X:"+x+" Y:"+y);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawImage(img,last.x-29 ,last.y-85,this);
} public void mouseClicked(MouseEvent e) {
} public void mousePressed(MouseEvent e) {
timer.start();//运行timer
current = e.getPoint(); //current获得鼠标的坐标
double distance = current.distance(last);//鼠标的坐标跟last(图片)的坐标差距
xRate = (current.getX() - last.getX())/distance*RATE;//xRate=鼠标的X坐标-图片的X坐标/distance(两者之间差距)*(RATE)6.0
yRate = (current.getY() - last.getY())/distance*RATE;//tRate=鼠标的Y坐标-图片的Y坐标/distance(两者之间差距)*(RATE)6.0
} public void mouseReleased(MouseEvent e) {
} public void mouseEntered(MouseEvent e) {
} public void mouseExited(MouseEvent e) {
}
public static void main(String[] args){
JFrame frame = new JFrame();//第1步
frame.setSize(500,500);//第2步
frame.getContentPane().add(new ImageMoveTest(),BorderLayout.CENTER);//第3步
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}先看上面代码
上面的代码实现 鼠标点击一个地方 图片就移动过去!!但是有个地方需要高手帮忙
就是 在移动图片时
判断角度 就是
鼠标点击的地方 和图片的地方比较一下!
得到鼠标点击的地方是图片的方向度数 顺时针````
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货