# Java: Alternate Layout Managers

GridBagLayout is the the best layout that Java has to offer, but some independently developed layout managers are better, either because they are much easier to use, or because they do a better job (or both!).

Below are some popular, free, layout managers. They fall into two main categories: rectangular table-oriented layouts, and hierarchical organization.

## Table-oriented Layouts

JGoodies Form layout may be the best. I've also found TableLayout and HIGLayout easy to use.

JGoodies Form layout
  The JGoodies offerings have some of the best layout tools. Most of them are free, but they also offer some for-pay products. Here's how Karsten Lentzsch, the author, described it in a comp.lang.java.gui posting.

  > The free JGoodies Forms layout system has been designed to good design quickly. Besides a powerful and flexible layout manager, there are helper classes (non-visual) builders, a tutorial, layout tips&tricks, etc. guide you through visual design and its implementation in Java.

  > Many developers have reported that the Forms has turned their UI work into kind-of joy, where they were frustrated with the GBL before.

  > The pure Forms layout system targets primarily source coders; however, a design goal was the simple integration with visual builder tools that help you save time or improve the design. There are now some visual builders that are worth a look - open the Forms' README.html and see the "Visual Builders" section in the sidebar.

  > Hope this helps. Best regards,
  > Karsten Lentzsch

  URL: Overview www.jgoodies.com/freeware/forms/index.html
TableLayout
  I've used TableLayout with satisfaction. It's easier than GridBagLayout, yet accomplishes much the same thing. From their site:

  > TableLayout is a layout manager that provides all the power of GridBagLayout, but is simple and easy to use. TableLayout simplifies the creation of graphical user interfaces by providing an intuitive and powerful way to specify where components are placed and how they are resized. TableLayout makes it easy to write professional user interfaces quickly and easily.

  > TableLayout is a free layout manager. You may use it in any commercial or non-commercial project. There are no royalties or license fees. You may subclass any class in the TableLayout package. You may unjar or rejar the classes and source files as you wish. The only restriction is that you may not distribute modified versions of the TableLayout source. This is to prevent confusion about what TableLayout does and to give credit to the author.

  URL: www.clearthought.info/software/TableLayout/

  Interview with TableLayout creator Daniel Barbalace

HIGLayout
  HIGLayout is similar to GridBagLayout in that there are rows and columns of variable heights and widths, and that that some of them are expandable.
  HIGLayout Tutorial
SGLayout
  URL: http://www.javaworld.com/javaworld/javatips/jw-javatip129.html

## Hierarchical Layouts

UIHierarchy
  Looks interesting. Written after Pnuts and Hierarchical.
  URL: chrriis.brainlex.com/projects/uihierarchy/index.html
PnutsLayout and HierarchicalLayout
  HierarchicalLayout provides an interface to other layout managers, and in particular PnutsLayout is to be used with it. After a brief look, it would seem that UIHierarchy is a better choice
  URL: pnuts.org/snapshot/latest/modules/pnuts.awt/doc/PnutsLayout.html
  URL: pnuts.org/snapshot/latest/modules/pnuts.awt/doc/hierarchicalLayout.html

## Other

There are other possibilities that I haven't really looked at closely.

- JH Labs Layout Managers
- Links to lots of layout managers.
- mindprod.com/jgloss/layout.html has more layout references.
- Defining "rules" for layouts - Thoughts about a CSS-like approach.