2011-10-03 61 views
0

即时尝试实现getBounds()方法,但我不能让工会工作;我不知道工会如何运作。我的代码如下:为什么isnt Rectangle2D.createUnion()为我工作?

public Rectangle2D getBounds2D() { 
    Rectangle2D rec= new Rectangle2D.Double(); 
    Rectangle2D temp; 
    for(int i=0; i<shapes.size(); i++){ 
     temp = new Rectangle2D.Double(shapes.get(i).getBounds2D().getX(),shapes.get(i).getBounds2D().getY(),shapes.get(i).getBounds2D().getWidth(), shapes.get(i).getBounds2D().getHeight()); 
     rec.createUnion(temp); 

    } 
    return rec; 
} 

shapes变量是Shapes的数组列表。

我使用温度在该ArrayList

伊夫创建使用从每个形状的边界的矩形的getBounds用过()。的getWidth /高度上温度,看它是否正在返回奇怪的数字,但在数字看起来细。当我打电话给rec.getBounds.getWidth /高度时,我都得到0.0。从这里,我假设我没有正确使用union()。有没有人有任何见解,我可以做什么?谢谢!

回答

3

如果您不确定如何使用该方法,那么为什么您的代码如此复杂以测试该方法?你为什么循环和数组?你将如何验证结果?

从简单的事情开始。尝试使用只有两个矩形的方法和每个Rectangle的硬编码值。然后您可以轻松验证结果。如果它不起作用,那么你有一个完整的程序发布。

喜欢的东西:

public class Test 
{ 
    public static void main(String args[]) throws Exception 
    { 
     Rectangle a = new Rectangle(5, 5, 30, 30); 
     Rectangle b = new Rectangle(10, 10, 50, 50); 
     a = a.union(b); 
     System.out.println(a); 
     System.out.println(b); 
    } 
}