public void mouseClicked(MouseEvent e) { TableColumnModel colModel = table.getColumnModel(); int columnModelIndex = colModel.getColumnIndexAtX(e.getX()); int modelIndex = colModel.getColumn(columnModelIndex).getModelIndex(); if (modelIndex < 0) return; if (sortCol == modelIndex) isSortAsc = !isSortAsc; else sortCol = modelIndex; for (int i = 0; i < colNames.length; i++) { TableColumn column = colModel.getColumn(i); column.setHeaderValue(getColumnName(column.getModelIndex())); } table.getTableHeader().repaint(); Collections.sort(rowData, new MyComparator(isSortAsc)); table.tableChanged(new TableModelEvent(MyTableModel.this)); table.repaint(); }