我有一个返回大量行的数据库查询。 JDBC
在JTable
中显示行之前,Iterable<R>
没有告诉您有多少行返回,并且有太多行要计算它们。
所以我正在使用的模型是TableRowModel
,但遗憾的是,non-JTable
必须事先知道行数。
我可以想象一些可行的策略:
JDBC
组件支持渲染行而不事先知道行数(理想情况,但我找不到。)我想知道是否有一种“正常”的方式来做到这一点,因为我不经常在UI中看到这种事情。我检查过的少数{{1}}工具(我认为这些是最好的选择)似乎急切地加载结果或页面(作为用户,我真的不喜欢在GUI应用程序中分页,所以我想避免这种情况。)
表格上的“查找”等操作理想情况下应该以“可理解的”方式工作......所以看起来这似乎不会太容易。
答案 0 :(得分:3)
在SwingWorker
的实施中使用AbstractTableModel
。让工作者对查询进行分区,以便及时获得合理数量的记录,而在后台读取其余记录。使用PropertyChangeListener
显示进度并实施取消按钮。
答案 1 :(得分:1)
您有两种可能性:
第一个变体对用户来说更好(因为用户可以看到表的大小并且可以直接滚动到最后一行),但第二个变量更容易实现,因为它不需要基于索引的行加载。