Пользовательская сортировка SortableTable - PullRequest
1 голос
/ 22 февраля 2012

Я исправляю проект, который использует jide SortableTable .Если таблица содержит данные только на английском языке, то сортировка работает просто отлично.Если данные на смешанных западноевропейских языках, сортировка не удалась.

Если я сортирую коллекции данных, используя Collator с силой "SECONDARY", все работает нормально.

Вопрос: как сделать SortableTable для сортировки данных с SECONDARY colatorпрочность или с заказным компаратором?

Ответы [ 2 ]

2 голосов
/ 23 февраля 2012

Модель JIDE SortableTableModel использует ObjectComparatorManager для получения компаратора.Вы можете зарегистрировать свой Collator (по умолчанию мы используем PRIMARY collator)

Collator collator = Collator.getInstance ();collator.setStrength (Collator.SECONDARY);

ObjectComparatorManager.registerComparator (String.class, collator, new ComparatorContext ("CollatorSecondary"));// "CollatorSecondary" может быть любой строкой, которая уникальна в вашем приложении

Затем в вашем подклассе SortableTableModel вы возвращаете новый ComparatorContext ("CollatorSecondary"), переопределяя getColumnComparatorContext (столбец int) для столбца.

Другим быстрым способом является переопределение метода getComparator (int столбца) SortableTableModel, если вы просто хотите, чтобы это поведение выполнялось в одной таблице.

И последнее, но не менее важное: вам также может потребоваться вызвать setAlwaysUseComparators (true) для SortableTableModel, посколькуИз соображений производительности мы использовали метод CompareTo для значения ячейки, если он доступен, без использования компаратора.

0 голосов
/ 22 февраля 2012

Как насчет наследования и полиморфизма? Вы можете создать подкласс нового класса из SortableTable и добавить пользовательское поведение. И используйте его экземпляр, где вам нужен SortableTable.

...