Използвам 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
. AFAIK таблицата използваRowSorter
(зададена чрезtable.setRowSorter(...)
) и по подразбиране ще бъде екземпляр наTableRowSorter
, който трябва да работи правилно при класифицирано внедряване наComparable
. Освен това можете също да опитате да получитеRowSorter
и да се обадите наsetComparator(index, comparator)
. - person Thomas   schedule 22.06.2015