public void setColumnPreferredWidths(int... widths) {
		int columnCount = table.getColumnCount();
		int n = Math.min(widths.length, columnCount);
		TableColumnModel model = table.getColumnModel();
		for (int i = 0; i < n; i++) {
			TableColumn column = model.getColumn(i);
			int width = widths[i];
			if (width == 75) {
				// Horrible Code: we have special knowledge that a value of 75 is the default
				// column size, which we use in TableColumnModelState to signal that we can
				// override the size.  So, if the user sets that value, then change it to
				// override our algorithm.
				width = 76;
			}
			column.setWidth(width);
			column.setPreferredWidth(widths[i]);
		}
	}
Sets the column preferred widths.  If you give less widths then there are columns, then
the widths will be applied in order, with the remaining columns going untouched.
<p>
Note: this method needs to be called after building your columns. So, call this after
making any calls to {@link #addColumn(AbstractDynamicTableColumn)}.
<p>
<b>WARNING!</b>  If you set the widths to a size that is smaller than the total display,
then the table model will apply the extra space equally across your columns, resulting
in sizes that you did not set.  So, the best way to use this method is to set the
actual preferred size for your small columns and then set a very large size (400 or so)
for your columns that can be any size.

@param widths the widths to apply
Ghidra/Framework/Docking/src/main/java/docking/widgets/table/GTableWidget.java