Я использую ETable для немного дополнительных функций по сравнению со стандартным JTable.
Проблема, с которой я сталкиваюсь, заключается в правильной сортировке таблицы при нажатии заголовков столбцов. В настоящее время у меня есть поле даты, отображающее измененную юлианскую дату (MJD) в необработанном (двойном) формате. Внутри это объект MJD (который выглядит как строка даты). Когда таблица отсортирована, столбец обрабатывается по умолчанию (лексикографическая сортировка) и, таким образом, дает список, подобный 1.0, 10.0, 100.0, 101.0, ...
. Если я показываю объект MJD, а не двойную форму, он сортируется правильно; однако мне нужно отобразить его как двойной. Как заставить сравнения и сортировку выполняться на основе того, что отображается?
Обратите внимание, что я рассмотрел несколько похожих вопросов, размещенных здесь, например Сортировка Java JTable не работает только для одного столбца. Этот тип решения не работает для меня, так как я не могу просто вернуть двойной класс для столбца, поскольку внутри это другой тип объекта.
Comparator
, и, таким образом, вы можете сами определять, как эти строки сравниваются, т.е. преобразовывать их в двойные, а затем преобразовывать и т. д. - person Thomas   schedule 22.06.2015Comparator
, но я не совсем уверен, куда его поместить? Класс MJD уже переопределяетcompareTo
, чтобы мы могли сравнивать фактические объекты MJD. - person jkeuhlen   schedule 22.06.2015MJD
. Насколько мне известно, в таблице используетсяRowSorter
(устанавливается черезtable.setRowSorter(...)
), и по умолчанию будет экземплярTableRowSorter
, который должен правильно работать с классифицированной реализациейComparable
. Кроме того, вы также можете попробовать получитьRowSorter
и позвонитьsetComparator(index, comparator)
. - person Thomas   schedule 22.06.2015