Я написал свой собственный класс для прослушивания событий мыши в заголовке JTable. В этом классе я назначаю или нет TableRowSorter в таблице. Например: первый щелчок по возрастанию, второй по убыванию и т. д.; Если я помещу выделение в конец этого класса, результат будет непредсказуемым.
Код: Выделить всё
class ClickHeader extends MouseAdapter {
JTable table;
static int headerClickCount;
TableRowSorter sorter = new TableRowSorter();
static int lastColumn = -1;
ClickHeader(JTable t) {
table = t;
headerClickCount=0;
lastColumn=-1;
}
@Override
public void mousePressed(MouseEvent e) {
TableModel model = table.getModel();
int vColIndex = table.getTableHeader().getColumnModel().getColumnIndexAtX(e.getX());
if (vColIndex == -1) {
return;
}
vColIndex = table.convertColumnIndexToModel(vColIndex);
if(lastColumn != vColIndex){
lastColumn = vColIndex;
headerClickCount=0;
}
//
headerClickCount++;
if (headerClickCount == 3) {
table.setRowSorter(null);
sorter = new TableRowSorter();
headerClickCount = 0;
} else {
if (table.getRowSorter() == null) {
sorter.setModel(model);
}
table.setRowSorter(sorter);
}
table.getTableHeader().repaint();
}
Подробнее здесь: https://stackoverflow.com/questions/853 ... ow-sorting