Advertisement
redandwhite

CalculateCorrectColumnWidths

Oct 26th, 2012
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.69 KB | None | 0 0
  1. // properly resize columns in a jtable.
  2. // uses header renderers and cell renderers.
  3. public void calculateCorrectColumnWidths() {
  4.     JTableHeader header = table.getTableHeader();
  5.     TableCellRenderer defaultHeaderRenderer = null;
  6.  
  7.     if (header != null) {
  8.         defaultHeaderRenderer = header.getDefaultRenderer();
  9.     }
  10.  
  11.     TableColumnModel columnModel = table.getColumnModel();
  12.     TableModel tableModel = table.getModel();
  13.  
  14.     int margin = columnModel.getColumnMargin();
  15.  
  16.     for (int i = columnModel.getColumnCount() - 1; i >= 0; --i) {
  17.         TableColumn column = columnModel.getColumn(i);
  18.  
  19.         int columnIndex = column.getModelIndex();
  20.  
  21.         int width = -1;
  22.  
  23.         TableCellRenderer cellRenderer = column.getHeaderRenderer();
  24.  
  25.         if (cellRenderer == null) {
  26.             cellRenderer = defaultHeaderRenderer;
  27.         }
  28.  
  29.         if (cellRenderer != null) {
  30.             Component c = cellRenderer.getTableCellRendererComponent(
  31.                     table,
  32.                     column.getHeaderValue(),
  33.                     false,
  34.                     false,
  35.                     -1,
  36.                     i);
  37.  
  38.             width = c.getPreferredSize().width;
  39.         }
  40.  
  41.         for (int row = tableModel.getRowCount() - 1; row >= 0; --row) {
  42.             TableCellRenderer r = table.getCellRenderer(row, i);
  43.  
  44.             Component c = r.getTableCellRendererComponent(table,
  45.                     tableModel.getValueAt(row, columnIndex),
  46.                     false, false, row, i);
  47.  
  48.             width = Math.max(width, c.getPreferredSize().width);
  49.         }
  50.  
  51.         if (width >= 0) {
  52.             column.setPreferredWidth(width + margin);
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement