Debe establecer autoResize en OFF (setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
), pero también necesita un método de ayuda para cambiar el tamaño de sus columnas.
Este es el interior de una clase personalizada que se extiende JTable, pero que sólo puede hacer referencia a la misma facilidad con un JTable existente:
public void resizeColumnWidth() {
int cumulativeActual = 0;
int padding = 15;
for (int columnIndex = 0; columnIndex < getColumnCount(); columnIndex++) {
int width = 50; // Min width
TableColumn column = columnModel.getColumn(columnIndex);
for (int row = 0; row < getRowCount(); row++) {
TableCellRenderer renderer = getCellRenderer(row, columnIndex);
Component comp = prepareRenderer(renderer, row, columnIndex);
width = Math.max(comp.getPreferredSize().width + padding, width);
}
if (columnIndex < getColumnCount() - 1) {
column.setPreferredWidth(width);
cumulativeActual += column.getWidth();
} else { //LAST COLUMN
//Use the parent's (viewPort) width and subtract the previous columbs actual widths.
column.setPreferredWidth((int) getParent().getSize().getWidth() - cumulativeActual);
}
}
}
llamada resizeColumnWidth() cada vez que se agrega una fila.
añadir Opcionalmente un oyente a la mesa de modo que las columnas también se redimensionan cuando la propia tabla se cambia el tamaño:
public MyCustomJTable() {
super();
addHierarchyBoundsListener(new HierarchyBoundsAdapter() {
@Override
public void ancestorResized(HierarchyEvent e) {
super.ancestorResized(e);
resizeColumnWidth();
}
});
setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
}
ver este tutorial: [Tabla Columna Ajustador] (http://tips4java.wordpress.com/2008/11/10/table-column-ajustador /) –