TableCellRenderer потерян

У меня есть ArrayList, привязанный к JTable. После

 bindingGroup.unbind(); 
 bindingGroup.bind(); 

(сделано для обновления данных) Я потерял поведение рендерера ячеек таблицы.

Какие-либо предложения?


person user1066163    schedule 25.11.2011    source источник
comment
@camickr - согласен, совершенно очевидно, в чем вопрос (если вы знаете типичную проблему), проголосовали за повторное открытие   -  person kleopatra    schedule 26.11.2011
comment
кто удалил (мои и чужие) комментарии и почему?   -  person kleopatra    schedule 28.11.2011


Ответы (1)


Я не знаю, что делают методы bind(), но если они обновляют таблицу, изменяя модель, то TableColumnModel создается заново, что приводит к потере любого пользовательского средства визуализации, добавленного в таблицу.

Одним из решений является добавление средства визуализации обратно в таблицу после вызова методов bind().

Или после создания JTable вы можете использовать:

table.setAutoCreateColumnsFromModel(false); 

для предотвращения повторного создания TableColumnModel.

person camickr    schedule 27.11.2011
comment
большое спасибо camickr и kleopatra за повторное открытие моего вопроса, в следующий раз я постараюсь быть более ясным. - person user1066163; 28.11.2011
comment
Оно работает. После привязки заново делаю setCellRenderer, как Вы предлагаете. Камкир большое спасибо. Я не знал, что привязка вызывает потерю пользовательского рендерера. Спасибо. - person user1066163; 28.11.2011