我试图在 mouseClicked 中编写一段代码,删除从 vector 中单击的任何矩形。所有矩形都正确存储在 vector 中,并且当我运行程序时,我正在检查的点是有效的。查看文档,确实有一个 rectangle.contains(point)
方法,所以我不确定为什么以下代码片段无效。谢谢!
public void mouseClicked(MouseEvent m)
{
Point p = new Point(m.getPoint());
Vector v = ball.r; //ball.r is where they are put into in another object's method
boolean done = false;
int i = 0;
while (!done)
{
if(v.elementAt(i).contains(p))
{
v.removeElement(i);
i--; //prevent i from incrementing
}
i++;
}
}
此外,我没有在 for 循环中执行此操作,因为据我所知,当删除元素时, vector 将“重新打包”,并且我将跳过 vector 的元素。不确定我这样说/这样做是对还是错。
最佳答案
由于您已将Vector v
定义为原始类型 vector ,因此它不知道其中元素的类型,即v.elementAt(i)
,因此无法查找匹配的 contains()
方法。这就是问题的原因。
你有两个选择。在定义 Vector
时使用泛型,或者在调用 contains()
方法之前对元素进行类型转换
。
例如
Vector<Rectangle> v = (Vector<Rectangle>)ball.r;
或
if(((Ractangle)v.elementAt(i)).contains(p))
关于java - 矩形对象抛出错误,说它在java中找不到.contains()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223571/