Java 小程序的目的是这样的:一个球在屏幕上弹跳。该球的大小和速度可以通过滚动条更改。用户可以在屏幕上按下并拖动鼠标来绘制矩形。球也会从这些矩形上弹开。这些矩形的边界存储在 vector 中。单击某个矩形时,该矩形(以及该点的所有其他矩形)将从 vector (和屏幕)中删除。
我当前遇到的问题是单击删除对象不起作用。我正在做的是获取我单击的位置,然后逐步遍历 vector 的每个元素,查看它是否包含该点,如果包含,则将其从 vector 中删除。方法如下。
public void mouseClicked(MouseEvent m)
{
if (!ball.flag)
{
Vector<Rectangle> v;
v = (Vector<Rectangle>)ball.r;
Point p;
p = new Point(m.getPoint());
boolean done = false;
int i = 0;
for (Rectangle rect : v)
{
if(rect.contains(p))
{
v.removeElement(i);
System.err.print("Element removed");
continue;
}
i++;
if(i>=v.size())
done=true;
}
ball.r = v;
}
}
最佳答案
您需要的是使用迭代器。就像这样:
ListIterator<Rectangle> i = v.listIterator();
while(i.hasNext())
{
Rectangle r = i.next();
if(r.contains(p))
i.remove();
}
这将以安全的方式从列表中删除元素。
关于java - 在 Java 中单击时尝试删除屏幕上的对象不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13262157/