| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: GUI и Java FX приложения > Запись в CellEditor |
| Автор: Igorious 23.4.2012, 00:15 | ||
| Доброго времени суток! Хочу сделать редактирование ячеек в таблице, продублировав поле ввода. То есть у меня есть таблица с CellEditor'ом и есть JTextField. При изменении ячейки через CellEditor вводимый текст сразу же дублируется в JTextField, а если изменяем JTextField, то должен изменяться текст и в CellEditor'е. В одну сторону легко получилось: в самом деле, достаточно в CellEditor запихнуть JTextField с CaretListener'ом и по событию обновлять текст. А в другую сторону попробовал сделать так же, однако оно падает с java.lang.IllegalStateException: Attempt to mutate in notification. Вот как я пытаюсь сделать:
Подскажите, пожалуйста, как решить проблему. |
| Автор: Igorious 24.4.2012, 17:59 | ||
| Оказалось всё прозаично :) JTextField.SetText() вызывает событие CaretUpdate(). Поэтому добавление во второй CaretListener функции SetText() вызывало рекурсию и бедный swing выбрасывал Exception. Решилось введением дополнительной переменной boolean lock и такой проверкой в каждом участке:
Также пришлось в CellEditor'e ввести ещё локер для table.editCellAt(). |