Java Swing TableColumn get column width
import java.util.Arrays; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; public class Main extends JPanel { public static void main(String[] args) { JFrame f = new JFrame("JTable"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new Main()); f.pack();/*from w w w .j a va 2s. co m*/ f.setVisible(true); } public Main() { TableModel dataModel = new MyTableModel(); JTable table = new JTable(dataModel); int[] i = getColumnWidths(table); System.out.println(Arrays.toString(i)); JScrollPane jsp = new JScrollPane(table); this.add(jsp); } public static int[] getColumnWidths(JTable p_Table) { TableColumnModel model = p_Table.getTableHeader().getColumnModel(); int[] columnWidths = new int[model.getColumnCount()]; for (int i = 0, c = columnWidths.length; i < c; i++) { columnWidths[i] = model.getColumn(i).getWidth(); } return columnWidths; } } class MyTableModel extends AbstractTableModel { @Override public int getRowCount() { return 30; } @Override public String getColumnName(int i) { return ""+i; } @Override public int getColumnCount() { return 3; } @Override public Object getValueAt(int row, int col) { return Math.pow(row, col + 1); } @Override public Class<?> getColumnClass(int col) { return getValueAt(0, col).getClass(); } }