为什么Rectangle2D.create Union()不适合我?

时间:2011-10-03 00:08:14

标签: java swing awt

我试图实现一个getBounds()方法,但我不能让工会工作;我不能理解工会是如何运作的。我的代码如下:

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。

我使用temp来创建一个矩形,使用arraylist中每个形状的边界

我已经在临时使用了getbounds()。getWidth / Height以查看它是否返回了奇怪的数字,但数字看起来很好。当我调用rec.getBounds.getWidth / Height时,两者都得到0.0。从此,我假设我没有正确使用union()。有没有人对我能做什么有任何见解?谢谢!

1 个答案:

答案 0 :(得分: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);
    }
}