private TableColumn getResizingColumn(JTableHeader header, Point p) { return getResizingColumn(header, p, header.columnAtPoint(p)); }
table.setRowSorter(sorter); table.getTableHeader().addMouseListener(new ColumnFitAdapter());
table.getTableHeader().addMouseListener(new ColumnFitAdapter()); table.setDefaultRenderer(Double.class, new CellRenderers.NumberCellRenderer());
@Override public void mouseClicked(MouseEvent e) { e.consume(); if (e.getClickCount() == 2) { JTableHeader header = (JTableHeader) e.getSource(); TableColumn tableColumn = getResizingColumn(header, e.getPoint()); if (tableColumn == null) return; int col = header.getColumnModel().getColumnIndex(tableColumn.getIdentifier()); JTable table = header.getTable(); int rowCount = table.getRowCount(); int width = (int) header.getDefaultRenderer().getTableCellRendererComponent(table, tableColumn.getIdentifier(), false, false, -1, col).getPreferredSize().getWidth(); for (int row = 0; row < rowCount; row++) { int preferedWidth = (int) table.getCellRenderer(row, col).getTableCellRendererComponent(table, table.getValueAt(row, col), false, false, row, col).getPreferredSize().getWidth(); width = Math.max(width, preferedWidth); } header.setResizingColumn(tableColumn); /* this line is very important */ tableColumn.setWidth(width + table.getIntercellSpacing().width); } }