在Java桌面应用程序中实现分页SQL结果表的有效方法

时间:2009-06-01 13:55:57

标签: java paging

我需要从SQL select结果集构建一个表。我想在表中添加一些分页功能,因为结果集可能非常大。有很多讨论如何在SQL级别进行分页。但是如何在GUI级实现分页?我有两个想法:

  1. 以网页界面风格进行分页 - 例如谷歌搜索结果分页;
  2. “Excel样式” - 表格所在的滚动窗格随着用户向下滚动而展开。
  3. 第二个看起来更好但实现起来很复杂。何时进行SQL选择下一个数据块,以便用户不必等待它。应该有一些“预读”逻辑?如果用户滚动得很快会发生什么?如何处理不再可见的行以获得恒定的内存使用量? 也许已经有这样的表组件或好的例子?或者这个好看的表功能是不值得实现它的努力?

2 个答案:

答案 0 :(得分:1)

您可以直接在TableModel中执行所有操作,无需在UI中更改某些内容(您可以在UI中显示某些内容 - 状态 - 但您无需更改JTable呈现自身的方式)。 / p>

只需实现一个JDBCTableModel,它将具有:

  • 计算结果并将此值作为getRowCount()返回。
  • 有一个后台线程,它将页面X(第X行到第X行+ page_size)带入内存
  • 如果视图(JTable)请求不存在的行(页面未加载)在左侧或右上角的某处显示消息“正在加载数据...”并返回空单元格。

分页对于Swing应用程序没有意义,它是在当前花哨的AJAX库实现表滚动之前发明的(参见http://www.ext-livegrid.com/)。

答案 1 :(得分:0)

为AJAX库构建分页表的人显然已经考虑过这一点,所以如果找不到已经构建的东西,你可以从中学习。由于您使用的是Java,请注意您可以找到用Java编写的用于GWT的分页表。看到这些SO线程:

GWT paging widget

Best pageable table implementation in GWT

您实施的想法(以及大部分代码)可以在上面提到的开源项目中找到。