Java JTable Column Width Set autoFitColumnWidth(JTable table, TableColumn tableColumn)

Here you can find the source of autoFitColumnWidth(JTable table, TableColumn tableColumn)

Description

auto Fit Column Width

License

Open Source License

Declaration

public static Dimension autoFitColumnWidth(JTable table, TableColumn tableColumn) 

Method Source Code

//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();
    }
}

Related

  1. adjustColumnPreferredWidths(JTable table)
  2. adjustColumnWidth(JTable table, int buf)
  3. adjustColumnWidth(JTable tbl, int col, int maxColumnWidth)
  4. adjustColumnWidth(TableModel model, int columnIndex, int maxWidth, int rightPadding, JTable table)
  5. adjustColWidth(JTable table, int firstColumnWidth, int middleColumnWidth, int lastColumnWidth, int padding)
  6. autoResizeColWidth(final JTable table, final DefaultTableModel model)
  7. autoResizeColWidth(JTable table, AbstractTableModel model)
  8. autoResizeColWidth(JTable table, int extraSpaceToColumn)
  9. autoResizeColWidthNoFill(JTable table)