![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Avtarkia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 24.4.2008 Репутация: нет Всего: нет |
Привет!
У меня возникла следующая проблема: таблица создается из бд с помощью самописной модели. Если пользователь добавляет новые данные(вводит и потом нажимает "добавить"), то при обработке нажатия на кнопку данные отсылаются в бд и вызывается initialize(), в котором прописана вся прорисовка(с получением данных из бд). БД сразу обновляется, а таблица - только после перезапуска. ЗЫ:Видела вот тут, что для самописной модели нужен TableModelListener. Когда я пытаюсь его добавить к кнопке, эклипс ругается. Или его как-то надо по-хитрому описывать еще? ЗЫЫ: setValueAt(...) в ActionPerformed также игнорится((
Это сообщение отредактировал(а) Avtarkia - 18.11.2008, 23:25 |
|||
|
||||
| Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 8 Всего: 9 |
В модели таблицы, после изменения данных нужно приписать одну из подходящих функций
http://java.sun.com/docs/books/tutorial/ui...table.html#fire fireTableDataChanged(); например, если изменились все данные Но тут нужно думать о том, что таблица, т.е. данные могут оказаться пустыми, в этом случае нужно палить fireTableRowsDeleted(n,m); с какой строки по какую удалились данные, ну как то так, если нужно, то вечером кину пример из своей модели Но там не сложно, разберетесь. |
|||
|
||||
| Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 8 Всего: 9 |
Вот как я делаю после перезагрузки данных
Может и не верно, я сам с этим разбираюсь, так что вполне вероятно, что вариант не окончательный |
|||
|
||||
| Avtarkia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 24.4.2008 Репутация: нет Всего: нет |
что-то ничего не помогает((
с fireChange я пробовала уже. Единственное,меня немного смущает,что он вызывается для модели,а не самой таблицы... |
|||
|
||||
| Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 8 Всего: 9 |
Avtarkia, приведите код модели таблицы
Если нужно обновлять данные модели, то делать это следует в модели таблицы, там же и палить, что они изменились, тем самым оповещая таблицу, что ее надо перерисовать На прямую с моделью не стоит работать JTable someTable = new JTable(new someModel()); в дальнейшем если нужен доступ к методам модели, то ((someModel)someTable.getModel()).someMetod(); //А вот внутри этого метода и палить, что данные изменились Но я могу и ошибаться |
|||
|
||||
| Avtarkia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 24.4.2008 Репутация: нет Всего: нет |
То есть,грубо говоря, надо описать методы, с помощью которых обновляется таблица, прямо в описании модели? Или вообще переопределить fire для конкретного случая?
Вот вложенный класс для модели:
|
|||
|
||||
| Connie |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 8 Всего: 9 |
Avtarkia, тут вот в чем дело
MyTableModel myModel = new MyTableModel(); MyTable myTable= new MyTable( myModel ); //Вот тут происходит копирование модели "внутрь" таблицы Теперь вызов этого метода myModel.someMetod(); приведет к изменению данных внутри myModel, а модель которая находится "внутри" таблицы останется без изменений, поэтому и таблица не будет перерисована, хотя данные изменятся А вот если вызвать этот метод так ((MyTableModel)myTable.getModel()).someMetod(); - тот тут уже вызывается та модель, что действительно связана с таблицей Ведь в этом коде передается не указатель на модель таблицы MyTable myTable= new MyTable( myModel ); А происходит копирование экземпляра класса.
Пример я приводил в своем коде |
||||
|
|||||
| Avtarkia |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 24.4.2008 Репутация: нет Всего: нет |
Ага... Попробую..
Спасибо!!! |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |