JAVA可视开发里,将鼠标样式变成自己选定图片并且不超出边界的方法
import java.awt.*;
import java.awt.event.*;
import java.awt.image.MemoryImageSource;
import javax.swing.*;
public class GameMouseMove extends JPanel implements MouseMotionListener{
ImageIcon role = new ImageIcon("图片绝对路径.png");
int roleX=500;//定义图片一开始出现在视图中的X坐标
int roleY=500;//定义图片一开始出现在视图中的Y坐标
int newroleX = roleX;//移动后新鼠标在视图中的X坐标位置(在下方的paint方法里将鼠标置于图片中央)
int newroleY = roleY;
int roleWidth =62;//定义图片的宽
int roleHeight = 40;//定义图片的高
public void paint(Graphics g) { //画图
//hidemouse(); //隐藏鼠标方法
super.paint(g);
//g.drawLine(roleNX,roleNY,roleX,roleY );
g.drawImage(role.getImage(),roleX,roleY,roleWidth,roleHeight,null);
//g.drawString("我被烦死了",roleX,roleY);
}
public void mouseDragged(MouseEvent e) { //鼠标点击监听器
newroleX = e.getX()-roleWidth/2; //判断图片移动范围,将鼠标置于图片中央
newroleY = e.getY()-roleHeight/2;
//System.out.println("移动触发"+e.getX()+","+e.getY()+","+newroleX+","+newroleY);
//1500和900为视图的高和宽
if((newroleX+roleWidth>1500)&&(newroleY+roleHeight>900)) //判断右下角
{/*X,Y值不做改变*/}
else if((newroleX<0)&&(newroleY<0)) //判断左上角
{/*X,Y值不做改变*/}
else if((newroleX+roleWidth>1500)&&(newroleY<0)) //判断右上角
{/*X,Y值不做改变*/}
else if((newroleY+roleHeight>900)&&(newroleX<0)) //判断左下角
{/*X,Y值不做改变*/}
else if((newroleX+roleWidth>1500) //判断左边缘和右边缘
||
(newroleX<0)) {
roleY = newroleY;
repaint();
}
else if((newroleY+roleHeight>900) //判断上边缘和下边缘
||
(newroleY<0)){
roleX = newroleX;
repaint();
}
else { //未超范围值不变
roleX = newroleX;
roleY = newroleY;
repaint();
}
}
public void mouseMoved(MouseEvent e) { //鼠标移动监听器
//以下判断同上
newroleX = e.getX()-roleWidth/2;
newroleY = e.getY()-roleHeight/2;
//System.out.println("移动触发"+e.getX()+","+e.getY()+","+newroleX+","+newroleY);
if((newroleX+roleWidth>1500)&&(newroleY+roleHeight>900))
{/*X,Y值不做改变*/}
else if((newroleX<0)&&(newroleY<0))
{/*X,Y值不做改变*/}
else if((newroleX+roleWidth>1500)&&(newroleY<0))
{/*X,Y值不做改变*/}
else if((newroleY+roleHeight>900)&&(newroleX<0))
{/*X,Y值不做改变*/}
else if((newroleX+roleWidth>1500)
||
(newroleX<0)) {
roleY = newroleY;
repaint();
}
else if((newroleY+roleHeight>900)
||
(newroleY<0)){
roleX = newroleX;
repaint();
}
else {
roleX = newroleX;
roleY = newroleY;
repaint();
}
}
}