Contents /
Previous /
Next
Center Mouse Cursor (by Stefan Rudnitzki)
Use awt.Robot to the center the mouse cursor.
import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Point;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseMotionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
// The Robot generates a mouese move
// event that keeps the cusor in the middle
// of the window after mouseExited.
// Then processing mouse events one has to
// distingush between these kind of mouse events
// and mouse events generated by the user.
// Thers is a Flag in the the event class for that.
public class CenterMouseCursor {
static boolean enabled = false;
public static void main(String[] args){
final JFrame frame = new JFrame();
frame.setSize(320, 240);
frame.getContentPane().setLayout(new BorderLayout());
JButton button = new JButton("switch");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
if(enabled){
enabled = false;
frame.getRootPane().setCursor(null);
}
else{
enabled = true;
frame.getRootPane().setCursor(null);
}
}
});
frame.getContentPane().add(button, BorderLayout.SOUTH);
frame.addMouseListener(new MouseAdapter(){
public void mouseExited(MouseEvent arg0) {
if(enabled && frame.isShowing()){
Point locOnScreen = frame.getLocationOnScreen();
int middleX = locOnScreen.x + (frame.getWidth() / 2);
int middleY = locOnScreen.y + (frame.getHeight() / 2);
try{
Robot rob = new Robot();
rob.mouseMove(middleX, middleY);
}catch(Exception e){System.out.println(e);}
//setting mouse coords
}
System.out.println(arg0.getSource());
};
});
frame.show();
}
}