1

我想知道是否有人知道基于 Swing 的 JTable 替代方案,它可以处理自己的滚动,而不必放在 JScrollPane 中。

让我解释一下为什么。我目前正在做一个项目,我需要以表格格式从数据库中显示多达 1.6 GB 的数据。我花了一周半的时间研究 JTable 及其所有相关的类。我所学到的让我相信 JTable 是不够的,原因如下。

数据集太大而无法在屏幕上显示的 JTable 需要放入 JScrollPane 中,该 JScrollPane 充当太大而无法在屏幕上显示的组件的移动窗口。这满足了能够拥有一个不使用分页的大得离谱的 JTable 的要求。但是,仍然会创建整个 JTable,这会导致要求 TableModel 提供所有数据。在这一点上我可能是错的,但我的实践经验和缺乏关于这些东西基础的文档表明我不是。

我需要一个 JTable,它会不断滚动从数据库中分页并在 TableModel 端缓存(只有大约 100-300 条记录)的巨大数据集,(注意!这是重要的部分)只要求在表的可见区域。我的经验表明,JScrollPane 中的标准 JTable 将要求提供所有数据,而不管什么是可见的,从而阻止任何类型的后端分页工作。告诉我我错了,给我看一个有效的反例,或者指向我需要的第三方组件。

4

1 回答 1

4

对此没有通用解决方案,因为实现取决于您打算如何将数据模型划分为可管理的部分。正如这里List<Record>所建议的,您可以使用该subList()方法对任意一个进行分区。您可以公开组成每个分区的单个模型,如此处所示。另请参阅使用 SQL 的这种替代方法。

我需要连续滚动而不是分页。

您的实现TableModel可以使用SwingWorker不断更新视图的 a,如本示例API中所示。

于 2012-11-01T18:45:27.867 回答