Как именно я использую метод "fireContentsChanged" в java.swing.AbstractListModel?
Как именно я использую fireContentsChanged()
метод в java.swing.AbstractListModel
? Этот метод вызывается, когда некоторые из ListModel
У элементов изменилось их содержимое.
- Означает ли это, что объект индекса как-то изменился?
- Или это также включает, когда объект индекса был заменен другим объектом?
- Можете ли вы использовать это для добавления / удаления индексов? Например, допустим, я удалил 10 случайных элементов из любой точки списка. Какие
index0
а такжеindex1
мне дать? Что если я вставлю 10 элементов в случайных местах?
1 ответ
AbstractListModel
это абстрактная реализация ListModel
что обеспечивает конкретные реализации ListDataListener
методы, но он не содержит конкретной структуры данных внутри. Получение соответствующего ListDataEvent
позволяет слушать JList
обновить себя в ответ на изменение в ListModel
, DefaultListModel
типичный конкретный подкласс AbstractListModel
которые манипулируют Vector
внутренне. Источник иллюстрирует типичное использование. Особенно, fireContentsChanged()
"Отправляется, когда содержимое списка изменилось слишком сложным образом, чтобы его можно было охарактеризовать предыдущими методами" fireIntervalAdded()
или же fireIntervalRemoved()
, Так как Vector
это наследие оригинала DefaultTableModel
вы захотите использовать более гибкую альтернативу; index0
а также index1
обратитесь к элементам выбранной вами структуры данных.
Что если я вставлю 10 элементов в случайных местах?
затем index0
а также index1
должен "заключить в скобки изменения".
Что означает "скобка изменения"?
В этом контексте скобка используется как глагол, означающий заключать или включать; index0
должен включать самый низкий измененный индекс, и index1
должен включать самый высокий измененный индекс. Диапазон может включать промежуточные ячейки, даже если они не были изменены. К счастью, как JTable
, JList
отображает только видимые ячейки, поэтому предельные издержки ограничены; больше здесь.