code: public void setFocusTraversalOrder( int traversalOrder ) {
          Assert.isTrue( traversalOrder == COLUMN_MAJOR_FOCUS_ORDER || traversalOrder == ROW_MAJOR_FOCUS_ORDER,
              "traversalOrder must be one of COLUMN_MAJOR_FOCUS_ORDER or ROW_MAJOR_FOCUS_ORDER");
  
          List focusOrder = new ArrayList(items.size());
  
          if( traversalOrder == ROW_MAJOR_FOCUS_ORDER ) {
              for( int row=0; row < rowOccupiers.size() - 1; row++ ) {
                  for( int col=0; col < maxColumns; col++ ) {
                      Cell currentCell = getOccupier(row, col);
                      if (currentCell != null && currentCell.getComponent() != null && !focusOrder.contains(currentCell.getComponent())) {
                          focusOrder.add(currentCell.getComponent());
                      }
                  }
              }
          } else if( traversalOrder == COLUMN_MAJOR_FOCUS_ORDER ) {
              for( int col = 0; col < maxColumns; col++ ) {
                  for( int row = 0; row < rowOccupiers.size() - 1; row++ ) {
                      Cell currentCell = getOccupier( row, col );
                      if( currentCell != null && currentCell.getComponent() != null && !focusOrder.contains( currentCell.getComponent() ) ) {
                          focusOrder.add( currentCell.getComponent() );
                      }
                  }
              }
          }
  
          setCustomFocusTraversalOrder( focusOrder );
      }
docs: Set the focus traversal order.
  @param traversalOrder focus traversal order. Must be one of {@link #COLUMN_MAJOR_FOCUS_ORDER}
  or {@link #ROW_MAJOR_FOCUS_ORDER}.