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