@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);
tableColumn.setWidth(width + table.getIntercellSpacing().width);
}
}