code: public void adjustColumnWidths() {
  		if (ADJUST_COLUMN_WIDTHS_MAX_ROWS > 0) {
  			TableColumn tableColumn;
  			TableCellRenderer renderer;
  			Object value;
  			Component component;
  			final int columnCount = getColumnCount();
  			final int rowCount = Math.min(getRowCount(), ADJUST_COLUMN_WIDTHS_MAX_ROWS);
  			int columnWidth;
  			final int maxWidth = 250; // taille ajustée maximum (15 minimum par défaut)
  
  			// Boucle sur chaque colonne et chaque ligne.
  			// Trouve le max de la largeur du header et de chaque cellule
  			// et fixe la largeur de la colonne en fonction.
  			for (int colNum = 0; colNum < columnCount; colNum++) {
  				tableColumn = columnModel.getColumn(colNum);
  				if (tableColumn.getMaxWidth() <= 0) {
  					continue; // colonne invisible
  				}
  
  				renderer = getTableHeader().getDefaultRenderer();
  				value = tableColumn.getHeaderValue();
  				component = renderer.getTableCellRendererComponent(this, value, false, false, -1,
  						colNum);
  				columnWidth = component.getPreferredSize().width + 10;
  				renderer = getCellRenderer(-1, colNum);
  
  				for (int rowNum = 0; rowNum < rowCount; rowNum++) {
  					value = getValueAt(rowNum, colNum);
  					component = renderer.getTableCellRendererComponent(this, value, false, false,
  							rowNum, colNum);
  					columnWidth = Math.max(columnWidth, component.getPreferredSize().width);
  				}
  				columnWidth = Math.min(maxWidth, columnWidth);
  
  				tableColumn.setPreferredWidth(columnWidth + getIntercellSpacing().width);
  			}
  		}
  	}
docs: Adapte les largeurs des colonnes selon les données de cette table. <br/>
  Pour chaque colonne la taille préférée est déterminée selon la valeur (et le renderer) du header et selon la valeur (et le renderer) de chaque cellule.