The algorithm used to lay out various graphical elements (buttons
and the like) can only be determined by the end programmer.
But writing layout algorithms is complex, probably not something
most programmers can do.
So, how to provide the necessarily flexibility within a simple
framework?
Solution -- provide a variety of different layout managers
(border layout, grid layout, so on), allow the end programmer to select
one of the many choices, and give it back to the framework.