Java JTable get column width

Description

Java JTable 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 ww.ja  v  a  2s  . c  o 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();
   }
}



PreviousNext

Related