import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MouseFollowDemo extends JFrame {
private double orientation;
private int distance;
private Point m;
public MouseFollowDemo() {
orientation = 0;
distance = 100;
m = new Point(200, 200);
final JPanel panel = new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g.create();
g2.drawRect(m.x-5, m.y-5, 10, 10);
g2.translate(m.x, m.y);
g2.drawString((int)Math.toDegrees(orientation) + "°", 10, 10);
g2.rotate(orientation);
g2.drawLine(0, 0, distance, 0);
g2.dispose();
}
};
panel.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseMoved(MouseEvent e) {
int dx = e.getX()-m.x;
int dy = e.getY()- m.y;
orientation = Math.atan2(dy, dx);
distance = (int)Math.sqrt(dx*dx+dy*dy);
panel.repaint();
}
});
add(panel);
}
public static void main(String[] args) {
JFrame frame = new MouseFollowDemo();
frame.setBounds(0, 0, 500, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}