Here you can find the source of autoFitColumnWidth(JTable table, TableColumn tableColumn)
public static Dimension autoFitColumnWidth(JTable table, TableColumn tableColumn)
//package com.java2s; /*/*from ww w .j a v a2s . com*/ Copyright 2003-2012 Dmitry Barashev, GanttProject Team This file is part of GanttProject, an opensource project management tool. GanttProject is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. GanttProject is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GanttProject. If not, see <http://www.gnu.org/licenses/>. */ import java.awt.Component; import java.awt.Dimension; import javax.swing.JTable; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; public class Main { public static Dimension autoFitColumnWidth(JTable table, TableColumn tableColumn) { final int margin = 5; Dimension headerFit = getHeaderDimension(table, tableColumn); int width = headerFit.width; int height = 0; int order = table.convertColumnIndexToView(tableColumn.getModelIndex()); // Get maximum width of column data for (int r = 0; r < table.getRowCount(); r++) { TableCellRenderer renderer = table.getCellRenderer(r, order); Component comp = renderer.getTableCellRendererComponent(table, table.getValueAt(r, order), false, false, r, order); width = Math.max(width, comp.getPreferredSize().width); height += comp.getPreferredSize().height; } // Add margin width += 2 * margin; // Set the width return new Dimension(width, height); } public static Dimension getHeaderDimension(JTable table, TableColumn tableColumn) { TableCellRenderer renderer = tableColumn.getHeaderRenderer(); if (renderer == null) { renderer = table.getTableHeader().getDefaultRenderer(); } Component comp = renderer.getTableCellRendererComponent(table, tableColumn.getHeaderValue(), false, false, 0, 0); return comp.getPreferredSize(); } }