java - 用于呈现未知行数的 JTable

标签 java swing jdbc jtable rendering

我有一个返回大量行的数据库查询。 JDBC在我将其显示在 JTable 中之前,不会告诉您有多少行返回并且有太多行无法计算它们.

所以我正在使用的模型是一个 Iterable<R> ,但不幸的是,TableRowModel必须预先知道行数。

我可以想象一些可能有效的策略:

  • 加载所有行,但在后台执行,并将它们分批添加到模型中。
  • 以某种方式检测呈现较低行的请求(我猜是通过模型)并在发生这种情况时动态加载更多行。
  • 在屏幕上有一个按钮来明确加载更多行。
  • 某种 non-JTable支持在事先不知道行数的情况下渲染行的组件(理想,但我找不到。)

我想知道是否有一种“正常”的方式来做到这一点,因为我在 UI 中很少看到这种事情。少数JDBC我检查过的工具(我认为这些是最好的选择)似乎要么急切地加载结果,要么将它们分页(作为用户,我真的不喜欢在 GUI 应用程序中分页,所以我想避免这种情况。)

不过,像在表格上“查找”这样的操作理想情况下应该以一种“可理解”的方式工作……所以看起来这不会太容易。

最佳答案

使用 SwingWorker在你执行AbstractTableModel .让工作人员对查询进行分区,以便及时提供合理数量的记录,而其余的则在后台读取。使用 PropertyChangeListener 显示进度并实现取消按钮。

关于java - 用于呈现未知行数的 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14450074/

相关文章:

java - 为什么我会收到此 SQLException 错误,指出找不到合适的驱动程序?

java - 重构代码以不抛出 Mockito 的 UnnecessaryStubbingException

java - 如何使用 JFileChooser 获取目录及其内部目录内容直到子级

java - 如何将 2 个相同大小的图像添加到一个 jlabel 中,并将它们合并到另一个 jlabel 之上?

java - 在不打开网页浏览器页面的情况下使用 keycloak 的方法是什么?

jdbc - Elasticsearch JDBC River未索引数组

java - 在 preparedStatement 中编辑查询

java从多个线程接收并连接文件

java - 如何获取列表中字符串的索引

java - 按方面禁用方法的实际调用