Я хотел бы отсортировать Jtable по дате в одной колонке, но показывать только дату в формате dd-MM-yyyy. Таким образом, все записи одинаковы и отличаются только секундами, которые не видны.Swing JTable сортировать по дате
У меня есть TableModel, который получает данные со следующим методом:
@Override
public Object getValueAt(int row, int col) {
Object[][] tableData = new Object[rowDataMap.keySet().size()][1];
int index = 0;
for (Long key : pane.nqm_messages.keySet())
{
Date date = rowDataMap.get(key);
SimpleDateFormat form = new SimpleDateFormat("dd-MM-yyyy");
String outputDate = form.format(date);
tableData[index][0] = outputDate;
index++;
}
return tableData[row][col];
}
А вот мой TableRowSorter, где я хочу, чтобы отсортировать строки:
TableRowSorter<TableModel> sorter = new TableRowSorter<TableModel>(model);
List<SortKey> keys = new ArrayList<SortKey>();
SortKey sortKey;
sorter.setComparator(0, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
//Sort dd-MM-yyyy
}
});
Если я это так Я не могу его сортировать, потому что строки являются obv. все так же. Когда я непосредственно использовать объект даты, как, что
tableData [индекс] [0] = дату
Я не знаю, как отобразить его в правильном формате, но сортировка может быть сделана.
Как я могу достичь обоих?
не возвращают строковое представление значения, возвращают значение себя и реализовать columnClass соответственно – kleopatra
Помимо того, что Kleopatra указал, что является крайне неэффективным чтобы попытаться построить данные отображения по каждому запросу ячейки – MadProgrammer
, кроме этого, реализация вашей модели выглядит подозрительной: а) почему создать полный массив 2d, когда вам просто нужно вернуть одно значение? б) зачем создавать одно значение для каждого вызова getValueAt? Если это так динамично, что он может меняться между вызовами, модель, скорее всего, ошибочно, не уведомляя своих слушателей по мере необходимости. C) Форматирование даты является ответственностью рендерера (не модели) – kleopatra