2009-12-03 4 views
1

У меня в настоящее время проблема, при которой редактирование содержимого одной ячейки в JTable изменяет содержимое другого; два из столбцов являются взаимоисключающими. Они оба флажки.Взаимные эксклюзивные CellEditors в JTable

На данный момент, если я изменяю одну ячейку, пока другой не будет перерисован, она обновится. Поэтому обе ячейки в строке могут отображаться как выбранные в любой момент времени. Это можно преодолеть, вызвав updateUI(), но он медленный и не очень хорошая идея.

У кого-нибудь есть какие-либо советы или предложения?

+0

К сожалению, решение должно быть в Java 1.4 – colinjwebb

+0

Не совсем ясно, что происходит в сравнении с вашим предполагаемым поведением. Не могли бы вы предоставить пример кода? – rob

ответ

1

Похоже, что вы должны использовать TableModelListener для прослушивания изменений в TableModel. Когда флажок будет изменен, вы получите событие обновления, и вы затем обновите другой флажок, используя model.setValueAt (...). Модель отвечает за уведомление о просмотре, чтобы перекрасить ячейку.

+0

Я добавил TableModelListener в TableModel. Однако он только срабатывает, когда объект добавляется/удаляется, а не когда атрибуты объекта изменяются ... любые идеи? – colinjwebb

+0

Редактор таблицы по умолчанию не изменяет объект, он всегда создает новый объект (String, Date, Integer) в зависимости от класса столбца. Если вы используете настраиваемый редактор, я не знаю, что делает ваш код. Если вам нужна дополнительная помощь, разместите свой http://sscce.org (SSCCE), который продемонстрировал проблему. – camickr

Смежные вопросы