private Dimension layoutSize(Container target,boolean preferred){
synchronized (target.getTreeLock()) {
    int targetWidth=target.getSize().width;
    if (targetWidth == 0) {
      targetWidth=Integer.MAX_VALUE;
    }
    int hgap=getHgap();
    int vgap=getVgap();
    Insets insets=target.getInsets();
    int horizontalInsetsAndGap=insets.left + insets.right + (hgap * 2);
    int maxWidth=targetWidth - horizontalInsetsAndGap;
    Dimension dim=new Dimension(0,0);
    int rowWidth=0;
    int rowHeight=0;
    int nmembers=target.getComponentCount();
    for (int i=0; i < nmembers; i++) {
      Component m=target.getComponent(i);
      if (m.isVisible()) {
        Dimension d=preferred ? m.getPreferredSize() : m.getMinimumSize();
        if (rowWidth + d.width > maxWidth) {
          addRow(dim,rowWidth,rowHeight);
          rowWidth=0;
          rowHeight=0;
        }
        if (rowWidth != 0) {
          rowWidth+=hgap;
        }
        rowWidth+=d.width;
        rowHeight=Math.max(rowHeight,d.height);
      }
    }
    addRow(dim,rowWidth,rowHeight);
    dim.width+=horizontalInsetsAndGap;
    dim.height+=insets.top + insets.bottom + vgap * 2;
    Container scrollPane=SwingUtilities.getAncestorOfClass(JScrollPane.class,target);
    if (scrollPane != null) {
      dim.width-=(hgap + 1);
    }
    return dim;
  }
}

private Dimension layoutSize ( Container target , boolean preferred ) { synchronized ( target . getTreeLock ( ) ) { int targetWidth = target . getSize ( ) . width ; if ( targetWidth == 0 ) { targetWidth = Integer . MAX_VALUE ; } int hgap = getHgap ( ) ; int vgap = getVgap ( ) ; Insets insets = target . getInsets ( ) ; int horizontalInsetsAndGap = insets . left + insets . right + ( hgap * 2 ) ; int maxWidth = targetWidth - horizontalInsetsAndGap ; Dimension dim = new Dimension ( 0 , 0 ) ; int rowWidth = 0 ; int rowHeight = 0 ; int nmembers = target . getComponentCount ( ) ; for ( int i = 0 ; i < nmembers ; i ++ ) { Component m = target . getComponent ( i ) ; if ( m . isVisible ( ) ) { Dimension d = preferred ? m . getPreferredSize ( ) : m . getMinimumSize ( ) ; if ( rowWidth + d . width > maxWidth ) { addRow ( dim , rowWidth , rowHeight ) ; rowWidth = 0 ; rowHeight = 0 ; } if ( rowWidth != 0 ) { rowWidth += hgap ; } rowWidth += d . width ; rowHeight = Math . max ( rowHeight , d . height ) ; } } addRow ( dim , rowWidth , rowHeight ) ; dim . width += horizontalInsetsAndGap ; dim . height += insets . top + insets . bottom + vgap * 2 ; Container scrollPane = SwingUtilities . getAncestorOfClass ( JScrollPane . class , target ) ; if ( scrollPane != null ) { dim . width -= ( hgap + 1 ) ; } return dim ; } }
returns the minimum or preferred dimension needed to layout the target container .
