Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTable sorting 
V
    Опции темы
PashaOvechkin
Дата 29.5.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



Привет всем!

Вопрос по сортировкам таблиц.  Создаю звой компаратор так:
Код

TableRowSorter<PositionsTableModel> sorter = new TableRowSorter<PositionsTableModel>( (PositionsTableModel) table.getModel());
        table.setRowSorter(sorter);

        Comparator<String> posIdComparator = new Comparator<String>() {

            @Override
            public int compare(String o1, String o2) {
                
                Long id1 = null;
                Long id2 = null;
                try {
                    id1 = Long.valueOf( o1 );
                } catch ( Exception e) {
                    return -1;
                }
                
                try {
                    id2 = Long.valueOf( o2 );
                } catch ( Exception e) {
                    return 1;
                }
                
                return id1.compareTo( id2  );
        
            }
        };

sorter.setComparator( PositionsTableModel.COLUMN_ID,                posIdComparator );

Всё вроде как ок, но позже, когда отсортирую таблицу по данной колонке, 
на клик мышью отрабатывает следующий код:
Код


public void actionPerformed(ActionEvent e) {
                GuiUtilsAndConstants.ensureEventDispatchThread();
                PositionsTableModel model = (PositionsTableModel) table.getModel();
                int row = table.getSelectedRow();
                
                System.out.println(" row -> " + row );
                if (row != -1) {
                    Position position = model.getPosition(row); // и вот тут я получаю не ту позицию, на которой кликнул мышью.... т.и произошла рассинхронизация между моделю и таблицей.



В принципе ясно почему так произошло - для сортировки у меня создан свой кампаратор, а данные модели сортируются... Видимо Collection.sort(...) 

не известно каким кампаратором. Как обойти ситуацию?

Спасибо!
PM MAIL Skype   Вверх
jeank
Дата 29.5.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 26.6.2008
Где: Калининград

Репутация: 1
Всего: 1



Не знаю как там с компараторами, у меня была задача сортировать таблицу средствами СУБД.
Я просто переопределил метод sort
в классе наследующий TableRowSorter
Код

SQLTableRowSorter<M extends TableModelAccount> extends TableRowSorter<M>

 
Потом говорил использовать этот сортер
Код

JTable.setRowSorter(....)




ААААА, я не внимательно читаю, не понял суть проблемы, вверху не читать ))

Код

int sort_row = resultTable.getRowSorter().convertRowIndexToModel(row);


Это сообщение отредактировал(а) jeank - 29.5.2009, 17:06
PM MAIL WWW   Вверх
PashaOvechkin
Дата 29.5.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 1
Всего: 4



jeank,  спасибо за отклит, но мне ето не помогло совсем.

Неужели никто не сталкивался? Ета сортировка не сортирует модель, либо сортирует её не заданным кампаратором

Добавлено через 4 минуты и 24 секунды
jeank,  ты тоже с верху не читай! smile)

Спасибо тебе! Хитро же ети сортеры работают...
Лучше бы модель сортировали!

Лови первый + ;))
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.