62,623
社区成员
发帖
与我相关
我的任务
分享
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);
}
});
}
}