Проблема с Java:Нужен отсортированный JList для представления таблицы базы данных.
Вопрос
Я нашел образец для отсортированного JList, но мое приложение работает на встроенной базе данных H2, поэтому мне интересно, нет ли лучшего способа реализовать это с учетом этого.Особенно учитывая, что рассматриваемая таблица может стать чрезвычайно большой, и дублирование всех этих данных в модели списка JList, похоже, как бы лишает смысла иметь базу данных для управления ею.
Есть ли хороший способ сделать это?Или мне придется придумать какой-то неуклюжий хак, чтобы позволить JList «прокручивать» динамически запрашиваемые фрагменты данных или что-то в этом роде?
Решение
Твой JList
's ListModel
отвечает за представление резервных данных в виде упорядоченного списка. ListModel
методы будут вызываться JList
из потока пользовательского интерфейса (событие AWT), поэтому его производительность должна быть довольно хорошей. Вот почему большинство реализаций имеют ListModel
сохраняет данные в памяти.Я полагаю, вы могли бы реализовать ListModel
с вашей базой данных в качестве резервных данных.Вы, скорее всего, продлите AbstractListModel
чтобы получить регистрацию слушателя и реализовать getElementAt(int)
и getSize()
. getElementAt
тогда он будет отвечать за получение объекта для определенного индекса.Имейте в виду, что JList
позвоню getElementAt
много раз для разных индексов, поэтому вы можете кэшировать результаты.В зависимости от того, какой объем данных вы кэшируете, вы можете просто получить весь набор данных из базы данных.