| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > JTable Listener на изменение ячейки |
| Автор: soulcub 19.5.2010, 22:56 |
| Работаю с редактором таблиц(JTable) в программе, и хотел сделать при выходе что-то типа "Сохранить перед выходом или нет?", для этого требуется чтоб какая-то переменная boolean стала фолс, когда будет хотя бы одна измененная ячейка. Подскажите как это лучше всего реализовать? Нашёл такую штуку как TableCellEditor, там есть что-то типа листенера на редактирование ячеек но надо целый класс переопределять, проще нельзя? Спасибо заранее. |
| Автор: pathfinder 20.5.2010, 09:35 | ||
| Поскольку таблица данные хранит в TableModel то факт изменения данных нужно отслеживать именно через нее. Т.е. создаем свою TableModel например наследуя ее от DefaultTableModel, переопределяем метод setValueAt(...) хотя бы вот так
|
| Автор: soulcub 20.5.2010, 15:02 |
| Блин, супер) Как я сам не додумался, это же гениально и просто) Спасибо большое) |
| Автор: pathfinder 20.5.2010, 15:17 |
| Пожалуйста ) ПС: тему не забываем закрывать. |
| Автор: soulcub 20.5.2010, 15:30 |
| Стоп стоп стоп) Я не забываю закрывать, если всё ок) Только что попробовал.. Но если менять значение 2 раза кликнув по ячейке и отредактировав, запускается метод setValue? Всё, разобрался) Но вышло немного не так, как Вы говорили) Переобозначил тот же метод в таблице, а не модели таблицы, и всё заработало. Разве данные хранятся в модели? |
| Автор: pathfinder 20.5.2010, 15:53 |
| Для не boolean типов и при использовании стандартных редакторов JTable(т.е. своих не подключали) значение будет записываться в модель, при: 1) уходе из данный ячейки(т.е. переходим на другую строку, или ячейку, или вообще переходим на другой контрол) 2) нажатии комбинации клавиш, интерпритируемых как завершение ввода(для JTextField это Enter) естественно это верно лишь при условии что новое значение может быть сохранено в модель, например введенная строка может быть представлена ввиде числа, иначе сохранения не происходит, редактор остается на месте, сама таблица не дает начать редактирование других ячеек. Добавлено через 2 минуты и 27 секунд ЕСТЕСТВЕННО данные хранятся в модели. Обязательно к прочтению http://ru.wikipedia.org/wiki/MVC |
| Автор: soulcub 20.5.2010, 16:09 |
| Спасибо, обязательно изучим. Я просто факт сказал.. Когда переопределил для модели - ничего не происходило, для таблицы - всё как хотелось. Видимо где-то, что-то, какой-то метод переопределил(а я это делал и с таблицей и с моделью), потому вышло так) |