Java applet的目的是这样的:一个球在屏幕上弹跳。这个球的大小和速度可以通过滚动条改变。用户可以在屏幕上按下并拖动鼠标以绘制矩形。球也将从这些矩形反弹。这些矩形的边界存储在矢量中。单击一个矩形时,它(和该点上的所有其他矩形)将从矢量(和屏幕)中删除。
我目前遇到的问题是单击删除对象不起作用。我正在做的是获取我点击的位置,然后单步执行向量的每个元素并查看它是否包含该点,如果是,则将其从向量中移除。这是方法。
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;
}
}
答案 0 :(得分:2)
您需要的是使用Iterator。像这样:
ListIterator<Rectangle> i = v.listIterator();
while(i.hasNext())
{
Rectangle r = i.next();
if(r.contains(p))
i.remove();
}
这将以安全的方式从列表中删除元素。