Эффективный способ реализации постраничной таблицы результатов SQL в настольном приложении Java - PullRequest
3 голосов
/ 01 июня 2009

Мне нужно построить таблицу из набора результатов выбора SQL. Я хочу добавить некоторые функции подкачки в таблицу, потому что набор результатов может быть очень большим. Было много дискуссий о том, как сделать пейджинг на уровне SQL. Но как реализовать пейджинг на уровне графического интерфейса? У меня есть две идеи:

  1. Выполните пейджинг в стиле веб-интерфейса - например, подкачку результатов поиска Google;
  2. «Стиль Excel» - область прокрутки, в которой находится таблица, расширяется при прокрутке пользователя вниз.

Второй выглядит лучше, но сложнее в реализации. Когда делать SQL, выберите следующую порцию данных, чтобы пользователь не ждал ее. Должна быть какая-то логика «читать впереди»? Что будет, если пользователь прокрутит довольно быстро? Что делать со строками, которые больше не видны для постоянного использования памяти? Может быть, уже есть такой компонент таблицы или хорошие примеры? Или, может быть, эта привлекательная функциональность таблицы не заслуживает усилий по ее реализации?

Ответы [ 2 ]

1 голос
/ 01 июня 2009

Вы можете делать все непосредственно в TableModel, нет необходимости что-либо менять в пользовательском интерфейсе (хорошо, что вы могли бы показать что-то в пользовательском интерфейсе - статус - но вам не нужно изменять то, как JTable отображает себя).

Просто реализуйте JDBCTableModel, которая будет иметь:

  • подсчитать результаты и вернуть это значение как getRowCount ().
  • имеет фоновый поток, который переносит страницу X (строка X в строку X + размер_страницы) в память
  • если представление (JTable) запрашивает строку, которой там нет (страница не загружена), показывает сообщение "Загрузка данных ..." где-то в левом или правом верхнем углу и возвращает пустые ячейки.

Пейджинг не имеет смысла для приложения Swing, оно было изобретено до того, как текущие модные библиотеки AJAX смогли реализовать прокрутку таблицы (см. http://www.ext -livegrid.com / ).

0 голосов
/ 02 июня 2009

Люди, которые создали таблицы подкачки для библиотек AJAX, очевидно, много думали об этом, поэтому вы можете учиться у них, если не можете найти что-то уже построенное. Поскольку вы используете Java, обратите внимание, что вы можете найти таблицы подкачки, написанные на Java для GWT. Смотрите эти темы:

GWT пейджинговый виджет

Лучшая реализация таблицы в GWT

Идеи (и большая часть кода) для вашей реализации могут быть найдены в упомянутых проектах с открытым исходным кодом.

...