I'm learning how to use layout managers, and I've come to learn that when the GridLayout constructor is set with both the number of rows and columns to non-zero values, it ignores the number of columns I specify and re-sizes them to (numComponents + numRows - 1)/numRows. Setting the number of rows or columns to 0 fixes this orientation problem easily enough, but I am still left wondering what the purpose is for this. Why would GridLayout ignore the parameters of its own constructor? If I want 6 rows and 7 columns I should be able to call new GridLayout(6, 7) and not have to worry about the number of components I have changing the number of columns on me. I just don't see the point, why is GridLayout set up this way?