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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обновление модели JTable, обновление модели при изменениях в БД 
:(
    Опции темы
nesya
Дата 23.8.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

значит есть у меня модель вот такая:

 
Код

AbstractTableModel dataModelExtend = new AbstractTableModel()
        {
            public int getColumnCount()
            {
                return columns;
            }

            public int getRowCount()
            {
                return attrs.size() + links.size() + 1;
            }

            public Object getValueAt(int row, int col)
            {
                 ..........
                 ...........
                 return obj;
            }

            public String getColumnName(int num)
            {
                String name = "";

                 ..........
                 ...........
                return name;
            }

            public Class getColumnClass(int column)
            {

                return String.class;
            }

            public boolean isCellEditable(int row, int col)
            {
                boolean fl = false;
                if (((row == attrs.size() + links.size()) && (col == 1))
                    || ((row < attrs.size()) && (col > 0)))
                    fl = true;
                return fl;
            }

            public void setValueAt(Object value, int row, int col)
            {
                 ..........
                 ...........
             };

        dataModelExtend.addTableModelListener(this);
        table = new JTable(dataModelExtend);
 


есть еще вот такя штука:

 
Код

    public void tableChanged(TableModelEvent e)
    {
        if (e.getType() == TableModelEvent.UPDATE)
        {
            table.tableChanged(new TableModelEvent(table.getModel()));
        }
    }
 


при изменениях в базе принудительно хочу вызвать обновление модели, чтобы добавились новые строки в таблице.
при этом делаю:

 
Код

                dataModelExtend.fireTableDataChanged();
                mainBof.table.revalidate();
 

но ничего не происходит. 
 smile 
PM MAIL   Вверх
AntonSaburov
Дата 24.8.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



А кусочек под IF - он вызывается точно ?
PM MAIL WWW ICQ   Вверх
nesya
Дата 24.8.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, точно уверена, отладкой проверяла
PM MAIL   Вверх
AntonSaburov
Дата 24.8.2007, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



а если вызвать прямо setModel для таблицы - по идее там уже все должно перегрузиться
PM MAIL WWW ICQ   Вверх
nesya
Дата 24.8.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да, действительно в использованием setModel(...) дело обстоит лучше, только у меня модели две: одна статическая, а другая динамическая в зависимости от данных и не всегда она установлена у таблицы при изменениях в БД. (т.е. у таблицы два режима просмотра)

так вот не понятно немного, модель обновляется когда, при setMod l(...) в таблицу? 
PM MAIL   Вверх
AntonSaburov
Дата 24.8.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Не понял я вопроса что-то. Динамическая таблица - это как ? Все время разное количество строк ?

Я просто никогда с такими штуками не сталкивался - обычно грузишь данные с сервера на клиента. И если что-то меняется, то перегружаешь.

Вообщем все достаточно просто и незамысловато - работает зато без проблем.
PM MAIL WWW ICQ   Вверх
nesya
Дата 24.8.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



динамическая - в смысле что при изменении данных в БД ее модель меняется : добавляются или удаляются строчки.

мне бы понять, как "простимулировать" это обновление модели. одного setModel() и  fireTableDataChange(), неужели достаточно?
PM MAIL   Вверх
AntonSaburov
Дата 24.8.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Цитата(nesya @  24.8.2007,  17:59 Найти цитируемый пост)
"простимулировать" это обновление модели. одного setModel() и  fireTableDataChange(), неужели достаточно? 

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

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

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


 




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


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

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