2014-01-30 56 views
0

好吧,我有一个包含矩形的形状数组列表。我将如何从arraylist中获取该矩形的x坐标?如何从形状数组列表中的矩形获取X()

我觉得我没讲清楚所以在这里,它是: 因此,这里的数组列表:

ArrayList<Shape> shapes = new ArrayList<Shape>() ; 

创建形状:

Shape rec1 = new Rectangle(100,100,200,200); 
shapes.add(rec1); 

现在我怎样才能得到的X坐标?我想:

Shape j = (Shape)shapes.get(i); 
j.getX() 

但是,这并没有工作..错误:无法找到符号

+0

你是如何从'ArrayList'获得**元素的? –

+0

哪一个?我假设你在'ArrayList'中有一些他们。也许你应该看一下[Collections Trail](http://docs.oracle.com/javase/tutorial/collections/) – MadProgrammer

+0

如果你的列表是一个ArrayList,你可能需要将你的形状转换成'Rectangle' '。 –

回答

1

形状并不一定有一个单一的x坐标。所以,你可以改变你的ArrayList所以它的类型是矩形:

ArrayList<Rectangle> shapes = new ArrayList<Rectangle>(); 

或者你可以用getBounds界限:

Shape s = shapes.get(i); 
double x = s.getBounds().getX(); 

对于一个矩形这主要产生自身的拷贝,但如果你有包括其他形状,你真的没有选择(除了某种情况下的铸造)。

+0

Dude,getBounds()正是我一直在寻找的感谢! – user3250769

+0

@ user3250769不客气。将来,API文档对于这类事情非常有用。 ; ) – Radiodef

1

投的对象为Rectangle,不是ShapegetX()Rectangle类的定义,而不是在Shape):

Rectangle r = (Rectangle) shapes.get(i); 
r.getX(); 

然而,这是不是可能是你想要的东西:如果你有Shape S,A名单不是所有的人都将Rectangle秒。您可以检查对象是否是一个Rectangle或不使用它之前:

Shape j = (Shape) shapes.get(i); 
if (j instanceof Rectangle) { 
    ((Rectangle) j).getX(); 
} 
相关问题