Как улучшить производительность для TableView в JavaFX - PullRequest
0 голосов
/ 01 июля 2019

У меня есть TableView с более чем 5000 записей.Есть ли способ загрузить из базы данных только первые 20 записей (TableView может отображать не более 20 записей одновременно), и когда пользователь прокручивает страницу вниз, следующие 20 записей будут загружены из базы данных.Или у вас, ребята, есть лучший способ сократить использование оперативной памяти до минимума?

1 Ответ

3 голосов
/ 02 июля 2019

TableView не создаст 5000 строк графики, если область просмотра имеет высоту всего 20 строк. Вероятно, он будет иметь только около 25 строк, что достаточно для предварительной загрузки нескольких строк за пределы экрана для повышения производительности. Строки таблицы экрана перерабатываются с новыми данными модели таблицы при прокрутке вверх и вниз. Так что идея о том, что вы можете каким-то образом «улучшить производительность», немного неуместна для начала.

Основная проблема с отложенной загрузкой заключается в том, что она не очень совместима со многими элементами TableView. Например, что должно произойти, когда пользователь щелкает заголовок столбца для сортировки? Насколько большим должен быть курсор прокрутки? Что произойдет, если пользователь перетаскивает курсор прокрутки вниз?

5000 предметов не кажутся мне такими большими. Ваша табличная модель должна иметь только данные, необходимые для отображения строки, которая в большинстве случаев сводится к нескольким свойствам строк и чисел. Поэтому, если ваша таблица не имеет ширины в сотни столбцов, вся ваша таблица должна быть разумного размера. 200 байт на строку - это всего 1 МБ для всей модели таблицы.

...