如何查看鼠标光标是否悬停在java graphics2D转换对象上

如何查看鼠标光标是否悬停在java graphics2D转换对象上,java,graphics,cursor,mouse,translation,Java,Graphics,Cursor,Mouse,Translation,我有一个矩形,并通过缩放和旋转将其转换到屏幕上的一个新位置。我想要的是能够检测鼠标光标何时悬停在屏幕上的这个对象上。而不是其原始的非翻译形式。我提供了可运行的代码来显示下面的问题 import java.awt.*; import java.awt.event.*; import java.awt.geom.Path2D; import java.util.*; import javax.swing.*; import javax.swing.Timer; public class Main

我有一个矩形,并通过缩放和旋转将其转换到屏幕上的一个新位置。我想要的是能够检测鼠标光标何时悬停在屏幕上的这个对象上。而不是其原始的非翻译形式。我提供了可运行的代码来显示下面的问题

import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Path2D;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;

public class Main extends JPanel {

    static int WIDTH;
    static int HEIGHT;

    public Main(){
    }

    public void paintComponent(Graphics g){
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.RED);
        g2d.fillRect(WIDTH/2, HEIGHT/2, 100, 100);
        g2d.rotate(Math.toRadians(45),WIDTH/2,HEIGHT/2);
        g2d.scale(0.5, 0.5);
        g2d.setColor(Color.BLUE);
        g2d.fillRect(WIDTH/2, HEIGHT/2, 100, 100);

    }
    public static void main(String[] args){
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        WIDTH = (int) screenSize.getWidth();
        HEIGHT = (int) screenSize.getHeight();
        Main main = new Main();
        JFrame frame = new JFrame();
        frame.setTitle("360 ATTACK");
        frame.setSize(WIDTH, HEIGHT);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(main);
        frame.setVisible(true);
    }
}
因此,为了重新迭代,我想知道鼠标光标何时悬停在蓝色形状上。不是红色的形状


谢谢

您可以使用
区域
和Area.contains(x,y)

我建议在实例变量中跟踪该区域,以便您可以在MouseMotionListener中访问它


也可以在这里看到这个区域包-所有以“区域”开头的内容:

Awesome。工作得很好。非常感谢。
Rectangle r = ...;
Area a = new Area(r);
a.transform(AffineTransform.rotate(Math.PI/2));
if (a.contains(event.getX(), event.getY()) {
  ...
}