private void updateNodeSizes(boolean updateAll){
  int aY, counter, maxCounter;
  TreeStateNode node;
  updateNodeSizes=false;
  for (aY=counter=0, maxCounter=visibleNodes.size(); counter < maxCounter; counter++) {
    node=(TreeStateNode)visibleNodes.elementAt(counter);
    node.setYOrigin(aY);
    if (updateAll || !node.hasValidSize())     node.updatePreferredSize(counter);
    aY+=node.getPreferredHeight();
  }
}

private void updateNodeSizes ( boolean updateAll ) { int aY , counter , maxCounter ; TreeStateNode node ; updateNodeSizes = false ; for ( aY = counter = 0 , maxCounter = visibleNodes . size ( ) ; counter < maxCounter ; counter ++ ) { node = ( TreeStateNode ) visibleNodes . elementAt ( counter ) ; node . setYOrigin ( aY ) ; if ( updateAll || ! node . hasValidSize ( ) ) node . updatePreferredSize ( counter ) ; aY += node . getPreferredHeight ( ) ; } }
resets the y origin of all the visible nodes as well as messaging all the visible nodes to updatepreferredsize ( ) . you should not normally have to call this . expanding and contracting the nodes automaticly adjusts the locations . updateall determines if updatepreferredsize ( ) is call on all nodes or just those that don ' t have a valid size .
