2014-01-30 54 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(); 
} 
相關問題