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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JTable Listener на изменение ячейки 
V
    Опции темы
soulcub
Дата 19.5.2010, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Работаю с редактором таблиц(JTable) в программе, и хотел сделать при выходе что-то типа "Сохранить перед выходом или нет?", для этого требуется чтоб какая-то переменная boolean стала фолс, когда будет хотя бы одна измененная ячейка. Подскажите как это лучше всего реализовать? Нашёл такую штуку как TableCellEditor, там есть что-то типа листенера на редактирование ячеек но надо целый класс переопределять, проще нельзя? Спасибо заранее.

Это сообщение отредактировал(а) soulcub - 19.5.2010, 23:07
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
pathfinder
Дата 20.5.2010, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Поскольку таблица данные хранит в TableModel то факт изменения данных нужно отслеживать именно через нее.
Т.е. создаем свою TableModel например наследуя ее от DefaultTableModel, переопределяем метод setValueAt(...) хотя бы вот так

Код

@Override
public void setValueAt(Object value, int row, int column) {
    super.setValueAt(value, row, column);
    
    tableWasChanged = true;
}



PM MAIL   Вверх
soulcub
Дата 20.5.2010, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Блин, супер) Как я сам не додумался, это же гениально и просто) Спасибо большое)
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
pathfinder
Дата 20.5.2010, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пожалуйста ) ПС: тему не забываем закрывать.
PM MAIL   Вверх
soulcub
Дата 20.5.2010, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Стоп стоп стоп) Я не забываю закрывать, если всё ок) Только что попробовал.. Но если менять значение 2 раза кликнув по ячейке и отредактировав, запускается метод setValue?

Всё, разобрался) Но вышло немного не так, как Вы говорили) Переобозначил тот же метод в таблице, а не модели таблицы, и всё заработало. Разве данные хранятся в модели?

Это сообщение отредактировал(а) soulcub - 20.5.2010, 15:46
--------------------
Так давай же, поспеши!Отыскать СВОЙ куб души!
PM MAIL ICQ   Вверх
pathfinder
Дата 20.5.2010, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Для не boolean типов и при использовании стандартных редакторов JTable(т.е. своих не подключали) значение будет записываться в модель, при:

1) уходе из данный ячейки(т.е. переходим на другую строку, или ячейку, или вообще переходим на другой контрол)
2) нажатии комбинации клавиш, интерпритируемых как завершение ввода(для JTextField это Enter)

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

Добавлено через 2 минуты и 27 секунд
ЕСТЕСТВЕННО данные хранятся в модели.

Обязательно к прочтению Model-View-Controler
PM MAIL   Вверх
soulcub
Дата 20.5.2010, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, обязательно изучим. Я просто факт сказал.. Когда переопределил для модели - ничего не происходило, для таблицы - всё как хотелось. Видимо где-то, что-то, какой-то метод переопределил(а я это делал и с таблицей и с моделью), потому вышло так)

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

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

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


 




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


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

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