acm.program.GraphicsProgram, not able to get appropriate size of canvas
<p>This is not a homework problem. I am only going over a freely available course from Stanford. I am using Ubuntu Linux with Eclipse.</p>

<p>Problem and Question:
I am drawing rectangles by calling add() on a acm.program.GraphicsProgram object. I am drawing certain number of rectangles which have a certain fixed width. However I am seeing that my rectangles are flowing off the visible area. I have tried setting a big enough width and height for both the GraphicsProgram object and the GCanvas object but still my rectangles are falling off the visible area. I always get the same height for GraphicsProgram object no matter what height I set.  Any pointers as to what am I doing wrong? </p>

<pre><code>    import acm.graphics.*;
    import acm.program.*;
    import java.awt.*;

    public class Pyramid extends GraphicsProgram {

    /** Width of each brick in pixels */
            private static final int BRICK_WIDTH = 30;

    /** Width of each brick in pixels */
            private static final int BRICK_HEIGHT = 12;

    /** Number of bricks in the base of the pyramid */
            private static final int BRICKS_IN_BASE = 14;

            public void run() {

                    setWindowSize();
                    this.createPyramid();
            }

            private void createPyramid()
            {
                    int centerX = findCenter();
                    int startingX = centerX - (BRICKS_IN_BASE / 2) * BRICK_WIDTH;
                    int startingY = BRICK_HEIGHT;

                    for(int numBricks = BRICKS_IN_BASE; numBricks&gt;= 1; numBricks--)
                    {
                            this.layBricks(startingX,startingY , numBricks);
                            startingX = startingX + BRICK_WIDTH / 2;
                            startingY = (BRICKS_IN_BASE - numBricks + 2) * BRICK_HEIGHT;
                    }
            }

            private void layBricks(int x, int y, int numOfBricks)
            {
                    for(int i = 0; i &lt; numOfBricks; i++)
                    {
                            add(new GRect(x,y,this.BRICK_WIDTH, this.BRICK_HEIGHT));
                            x+=this.BRICK_WIDTH;
                    }

            }
            private void setWindowSize()
            {
                    int width = BRICK_WIDTH * BRICKS_IN_BASE * 2;
                    int height = BRICKS_IN_BASE * BRICK_HEIGHT * 2;

                    this.setSize(width, height);
                    //this.setForeground(Color.GREEN);
                    //this.setBackground(Color.BLUE);
                    //this.getGCanvas().setBounds(0, 0, width, height);
                    //this.getGCanvas().add(new GRect(0,0,300,30));
                    //this.getGCanvas().setBackground(Color.WHITE);
                    System.out.println(this.getHeight());
                    System.out.println(this.getWidth());
                    System.out.println(this.getGCanvas().getHeight());
                    System.out.println(this.getGCanvas().getWidth());
            }


            private int findCenter()
            {

                    return this.getWidth() / 2;

            }


    }
</code></pre>
