Какой из них лучше: AbstractTableModel.fireTableDataChanged() или AbstractTableModel.fireTableRowInserted()

Будет хорошей идеей добавить одну строку и вызвать fireTableRowInserted() или добавить все строки, а затем вызвать fireTableDataChanged()?


person DKumar    schedule 09.07.2012    source источник


Ответы (1)


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

person JB Nizet    schedule 09.07.2012
comment
@Д.Г. обновив всю модель, вы, вероятно, потеряли все ссылки на пользовательские визуализаторы и редакторы. - person mKorbel; 09.07.2012
comment
@mKorbel нет, это структура изменилась, данные не изменились. И это маловероятно, но определенно для конкретных столбцов/редакторов для таблиц, где истинно автоматическое создание столбцов из модели (что по умолчанию) - person Walter Laan; 09.07.2012
comment
Мне нужно запускать это после каждого добавления строки (а я добавляю их много). Есть ли способ избежать вычисления количества строк каждый раз? - person Line; 03.10.2018