检测JPanel上的哪个形状/图像,并设置指向它的指针以供其他功能使用

时间:2016-01-11 10:27:21

标签: java arraylist mouselistener

我有一个JPanel,上面绘有各种形状(矩形,圆形,图像等),所有这些都继承自"可移动" class(仅包含形状中心的坐标)。 对象存储在arraylists中,每次单击时,迭代每个arraylist以检查是否已单击形状。

现在,我想做的是有一个类型为"可移动的指针"无论点击的形状是什么,所以当我在MousePressed函数中设置它时,我仍然可以使用它,例如在MouseDragged函数中拖动图像。

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

1 个答案:

答案 0 :(得分:0)

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

如果它不是Shape,那么你可以通过各种方式正确地完成它, 只需将新位置存储在某处并在那里绘制指针。 这适用于图像,或直接通过Graphics-Object绘制的Shape:

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

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