我写了一段不是很完美的代码,参考一下吧^o^package com.ddpie;import java.awt.AWTException; import java.awt.GraphicsDevice; import java.awt.GraphicsEnvironment; import java.awt.Robot; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener;import javax.swing.JFrame;public class TestCursorFrame { public static void main(String[] args) throws AWTException{ final int WIDTH = 300; final int HIGHT = 200;
final JFrame frame = new JFrame(); frame.setSize(WIDTH, HIGHT); frame.setLocation(200, 200); frame.setUndecorated(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true);
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice screen = env.getDefaultScreenDevice(); final Robot robot = new Robot(screen);
frame.addMouseMotionListener(new MouseMotionListener(){ public void mouseDragged(MouseEvent e) { resetCursorPos(e); } public void mouseMoved(MouseEvent e) { resetCursorPos(e); } private void resetCursorPos(MouseEvent e){ int curX = e.getX()+frame.getX(); int curY = e.getY()+frame.getY();
int frameLeft = frame.getX()+20; int frameRight = frame.getX()+frame.getWidth()-20; int frameUp = frame.getY()+20; int frameDown = frame.getY()+frame.getHeight()-20;
int x = curX; int y = curY;
if(curX<frameLeft){ x = frameLeft; } if(curX>frameRight){ x = frameRight; } if(curY<frameUp){ y = frameUp; } if(curY>frameDown){ y = frameDown; } if(x!=curX || y!=curY) robot.mouseMove(x, y); } }); } }
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Robot;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;import javax.swing.JFrame;public class TestCursorFrame { public static void main(String[] args) throws AWTException{
final int WIDTH = 300;
final int HIGHT = 200;
final JFrame frame = new JFrame();
frame.setSize(WIDTH, HIGHT);
frame.setLocation(200, 200);
frame.setUndecorated(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice screen = env.getDefaultScreenDevice();
final Robot robot = new Robot(screen);
frame.addMouseMotionListener(new MouseMotionListener(){
public void mouseDragged(MouseEvent e) {
resetCursorPos(e);
}
public void mouseMoved(MouseEvent e) {
resetCursorPos(e);
}
private void resetCursorPos(MouseEvent e){
int curX = e.getX()+frame.getX();
int curY = e.getY()+frame.getY();
int frameLeft = frame.getX()+20;
int frameRight = frame.getX()+frame.getWidth()-20;
int frameUp = frame.getY()+20;
int frameDown = frame.getY()+frame.getHeight()-20;
int x = curX;
int y = curY;
if(curX<frameLeft){
x = frameLeft;
}
if(curX>frameRight){
x = frameRight;
}
if(curY<frameUp){
y = frameUp;
}
if(curY>frameDown){
y = frameDown;
}
if(x!=curX || y!=curY)
robot.mouseMove(x, y);
}
});
}
}