![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Igorious |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.12.2011 Репутация: нет Всего: нет |
Доброго времени суток!
Хочу сделать редактирование ячеек в таблице, продублировав поле ввода. То есть у меня есть таблица с CellEditor'ом и есть JTextField. При изменении ячейки через CellEditor вводимый текст сразу же дублируется в JTextField, а если изменяем JTextField, то должен изменяться текст и в CellEditor'е. В одну сторону легко получилось: в самом деле, достаточно в CellEditor запихнуть JTextField с CaretListener'ом и по событию обновлять текст. А в другую сторону попробовал сделать так же, однако оно падает с java.lang.IllegalStateException: Attempt to mutate in notification. Вот как я пытаюсь сделать:
Подскажите, пожалуйста, как решить проблему. |
|||
|
||||
Igorious |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 14.12.2011 Репутация: нет Всего: нет |
Оказалось всё прозаично :)
JTextField.SetText() вызывает событие CaretUpdate(). Поэтому добавление во второй CaretListener функции SetText() вызывало рекурсию и бедный swing выбрасывал Exception. Решилось введением дополнительной переменной boolean lock и такой проверкой в каждом участке:
Также пришлось в CellEditor'e ввести ещё локер для table.editCellAt(). |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |