Я использую JTable с пустой строкой внизу таблицы, чтобы дать возможность добавлять новую строку в таблицу.
После вставки или записи данных в пустую строку я автоматически добавляю новую пустую строку под ней. (Предполагается, что он действует как визуальные таблицы Microsoft)
Я использую сортировщик строк Java по умолчанию,
Проблема в том, что мне нужно, чтобы пустая строка всегда была последней! но после сортировки таблицы она становится первой строкой.
Метод * сравнить (int model1, int model2)"класса DefaultRowSorter получает 2 номера строки и возвращает -1, если значение первой строки равно нулю и 1, если значение второй строки равно нулю. и в случае DESCENDING его умножить на -1, чтобы получить инвертированный порядок.
//Treat nulls as < then non-null
if (v1 == null) {
if (v2 == null) {
result = 0;
} else {
result = -1;
}
} else if (v2 == null) {
result = 1;
} else {
result = sortComparators[counter].compare(v1, v2);
}
if (sortOrder == SortOrder.DESCENDING) {
result *= -1;
}
Пустая строка сортируется как наименьшее значение, и в случае DESCENDING она будет первой строкой (из-за значения mult на -1) и вызывает множество проблем.
Я мог бы переопределить его, и если пустая строка (обычно последняя строка) не умножается на -1 в режиме DESCENDING, и это будет последняя строка после любой сортировки.
Но проблема в том, что метод " сравни " и его вызывающий " Row " внутренний класс являются закрытыми внутри DefaultRowSorter .
Есть ли способ избежать сортировки пустой строки и сделать ее всегда последней строкой?