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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Реакция на изменение количества строк в таблице, ?? 
:(
    Опции темы
PashaOvechkin
Дата 8.7.2008, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как лучше ето реализовать? 

Т.и - есть таблица информация в которой постоянно апдеитится. 
Строка может как добавится, так и стерется - многие листенеры на ней итд итп.

Так вот мне нужно в независимом компоненте аотображать количество строк в таблице...
Из етого компонента есть доступ к таблце - как ето реализовать?
PM MAIL Skype   Вверх
PashaOvechkin
Дата 8.7.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

как вам?
PM MAIL Skype   Вверх
Platon
Дата 8.7.2008, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Я думаю, что-то в этом роде тебе подойдет:

Код

final JTable t;
        t.getModel().addTableModelListener(new TableModelListener() {
            public void tableChanged(TableModelEvent e) {
                System.out.println(t.getModel().getRowCount());
                // Обновляем данные о размере таблицы
            }
        });

PM MAIL ICQ   Вверх
PashaOvechkin
Дата 8.7.2008, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо Платону! 
Но вот нормальный ли ето вариант?
Ето первое что в голову пришло.
Может можно сделать так, что бы таблица изменена не была...  smile 
Т.и Без лисенеров на таблице. 
От другого компонента получаем доступ к таблице - ИИИ - как то дальше

М?


PM MAIL Skype   Вверх
Platon
Дата 8.7.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Я б сказал даже так:
Код

public void tableChanged(TableModelEvent e) {
                if (e.getType() == TableModelEvent.UPDATE) return;
                    System.out.println(t.getModel().getRowCount());
                // Обновляем данные о размере таблицы
            }

PM MAIL ICQ   Вверх
PashaOvechkin
Дата 8.7.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



или так? smile
Код

public void tableChanged(TableModelEvent e) {
                if (e.getType() != TableModelEvent.UPDATE) return;
                    System.out.println(t.getModel().getRowCount());
                // Обновляем данные о размере таблицы
            }

PM MAIL Skype   Вверх
Platon
Дата 8.7.2008, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Цитата(PashaOvechkin @  8.7.2008,  20:03 Найти цитируемый пост)
Может можно сделать так, что бы таблица изменена не была... 

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

Добавлено через 2 минуты и 10 секунд
Цитата(PashaOvechkin @  8.7.2008,  20:06 Найти цитируемый пост)
или так?

нет не так. Мы игнорируем команду UPDATE, потому что число строк в таблице не меняется.

Это сообщение отредактировал(а) Platon - 8.7.2008, 19:07
PM MAIL ICQ   Вверх
PashaOvechkin
Дата 8.7.2008, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Platon @ 8.7.2008,  19:07)
Лично я не вижу смысла усложнять код. Слушатель - легкое, гибкое и ясное решение.

Ето необходимо для довольно увесистой системы... 
И ето лисенер, как бы, не очень в тему получится :-/  Выпадает из общей архитектуры

Это сообщение отредактировал(а) PashaOvechkin - 8.7.2008, 19:11
PM MAIL Skype   Вверх
Platon
Дата 8.7.2008, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Цитата(PashaOvechkin @  8.7.2008,  20:03 Найти цитируемый пост)
Т.и Без лисенеров на таблице. 

Это будет что-то типа этого.

Код

// ...
java.util.Timer t = new java.util.Timer(true);
        final JTable table;
        final MyMonitor monitor;
        t.scheduleAtFixedRate(new UpdateRowCountTask(table.getModel(), myMonitor), 0, 1000L);
// ...

class UpdateRowCountTask extends TimerTask {

    private TableModel tm;
    private MyMonitor monitor;


    public UpdateRowCountTask(TableModel tm, MyMonitor monitor) {
        this.tm = tm;
        this.monitor = monitor;
    }

    public void run() {
        monitor.updateRowCount(tm.getRowCount());
    }
}

PM MAIL ICQ   Вверх
PashaOvechkin
Дата 8.7.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Еще раз спасибо Платон! smile 

Так не покатит - грубо!

Кто что может посоветовать ?

Я думаю что других вариантов попросту нет
PM MAIL Skype   Вверх
Platon
Дата 8.7.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Давай проведем мозговой штурм.
Мне на вскидку приходит маньячества типа:
-Сделать класс-потомок от DefaultTableModel, в который будет врезан механизм обновления информации о числе строк.
-Сделать класс-потомок от JTable, в который также будет врезан механизм обновления инфы
-Периодическое обновление информации, которое я уже приводил
PM MAIL ICQ   Вверх
PashaOvechkin
Дата 8.7.2008, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Дам согласен с тобой - ето наверное и есть все возможные, реальные решения етой проблемы.
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.0815 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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