         if (!_columnWidths)
             return (nCols * (defaultColumnWidth + columnGap)) - columnGap;
         
-        var width:Number = 0;
+        var contentWidth:Number = 0;
         
         for (var i:int = 0; i < nCols; i++)
         {
             if ((i >= _columnWidths.length) || isNaN(_columnWidths[i]))
-                width += defaultColumnWidth + columnGap;
+                contentWidth += defaultColumnWidth;
             else
-                width += _columnWidths[i] + columnGap;
-        }
-        
-        return width - columnGap;
+                contentWidth += _columnWidths[i];
+        }
+        
+        if (nCols > 1)
+            contentWidth += (nCols - 1) * columnGap;
+        
+        return contentWidth;
     }
     
     /**

            case CollectionEventKind.REMOVE: return dataProviderCollectionRemove(event);
            case CollectionEventKind.REPLACE: return dataProviderCollectionReplace(event);
            case CollectionEventKind.MOVE: return dataProviderCollectionMove(event);
            case CollectionEventKind.REFRESH: return dataProviderCollectionReset(event);
            case CollectionEventKind.RESET: return dataProviderCollectionReset(event);
            case CollectionEventKind.UPDATE: return dataProviderCollectionReplace(event); return true;
                break;

        this.rowCount = IList(event.target).length;
        return true;
    }
    
    /**
     *  @private
     */
    private function dataProviderCollectionRefresh(event:CollectionEvent):Boolean
    {
        clear();
        this.rowCount = IList(event.target).length;
        return true;
    }    
}
}