Java 检测单击JPanel上的哪个形状/图像,并设置指向该形状/图像的指针以供其他函数使用

Java 检测单击JPanel上的哪个形状/图像,并设置指向该形状/图像的指针以供其他函数使用,java,arraylist,mouselistener,Java,Arraylist,Mouselistener,我有一个JPanel,在它上面绘制了各种形状(矩形、圆、图像等等),所有这些都继承自“moveable”类(只保存形状中心的坐标)。 对象存储在arraylist中,每次单击时,都会遍历每个arraylist以检查是否单击了形状 现在,我想做的是有一个类型为“moveable”的指针,它指向任何单击的形状,这样当我在MousePressed函数中设置它时,我仍然可以使用它,例如在MouseDragged函数中拖动图像 我可以通过使用临时值、对其执行操作并用修改后的对象替换原始对象来模拟该行为,但

我有一个JPanel,在它上面绘制了各种形状(矩形、圆、图像等等),所有这些都继承自“moveable”类(只保存形状中心的坐标)。 对象存储在arraylist中,每次单击时,都会遍历每个arraylist以检查是否单击了形状

现在,我想做的是有一个类型为“moveable”的指针,它指向任何单击的形状,这样当我在MousePressed函数中设置它时,我仍然可以使用它,例如在MouseDragged函数中拖动图像


我可以通过使用临时值、对其执行操作并用修改后的对象替换原始对象来模拟该行为,但我想知道是否有更优雅的方法来执行该操作。

如果指针也是一个形状,则没有其他方法来创建新的形状。 Java中的形状绑定到某个位置,无法移动

如果它不是一个形状,那么你有各种各样的方法来正确处理它, 只需将新位置存储在某个位置并在那里绘制指针。 这将适用于直接通过图形对象绘制的图像或形状:

g.drawImage(pointerImage, pointerX, pointerY, null);

g.fillRectangle(pointerX, pointerY, width, height, null);
//or any other "g.fill..."-method;