Итак, при сортировке JTable (пример ниже) по столбцу A получилось бы следующее. Однако вы хотите, чтобы данные сортировались, а не номера строк, правильно?
|row| column A | |row| column A |
+---+-----------+ +---+-----------+
| 1 | blah blah | --> | 1 | blah blah |
| 2 | something | | 3 | more blah |
| 3 | more blah | | 2 | something |
Я бы подошел к этому с TableCellRenderer для столбца 0. Хитрость заключается в том, чтобы игнорировать переданное значение и вместо этого использовать параметр строки.
public class RowRenderer extends JLabel implements TableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object color,
boolean isSelected, boolean hasFocus, int row, int column) {
setText(Integer.toString(row));
return this;
}
}
Примечание: если вы разбиваете на страницы свою таблицу (т. Е. Модель не содержит все строки; например, только строки 100-200), вам нужно будет сообщить средству визуализации ячейки сумму, которую нужно добавить row
для получения номера строки для отображения.