// header
JTableHeader tableHeader = getTableHeader();
if (tableHeader != null) {
Object headerValue = column.getHeaderValue();
TableCellRenderer headerCellRenderer = column.getHeaderRenderer();
if (headerCellRenderer == null) headerCellRenderer = tableHeader.getDefaultRenderer();
Component headerComponent = headerCellRenderer.getTableCellRendererComponent(this, headerValue, false, false, 0, columnIndex);
if (headerComponent.getPreferredSize().width > preferredWidth)
preferredWidth = headerComponent.getPreferredSize().width;
}
// rows
for (int rowIndex =0; rowIndex < getModel().getRowCount(); rowIndex++) {
if (preferredWidth > MAX_COLUMN_WIDTH) {
break;
}
Object value = getModel().getValueAt(rowIndex, columnIndex);
TableCellRenderer renderer = getCellRenderer(rowIndex, columnIndex);
if (renderer != null) {
Component component = renderer.getTableCellRendererComponent(this, value, false, false, rowIndex, columnIndex);
if (component.getPreferredSize().width > preferredWidth) {
preferredWidth = component.getPreferredSize().width;
}
}
}