我在Java中使用JTable列出数据库中的值。

我需要类似的东西,我需要在JTable中列出几组值。当我们使用JTable的滚动窗格向下滚动或向上滚动时,必须从数据库中加载下一组值。因此,我可以列出一些值,而不是加载所有值,并且滚动操作将检索下一个值范围。

我怎样才能做到这一点?
有人可以建议我一个想法吗?

最佳答案

您需要实现TableModel,例如子类DefaultTableModel。需要跟踪您已经从数据库中检索到的行,并且当表请求表模型更多行时,请从数据库中获取。这将在用户滚动表时发生。如果总行数很大,请小心,因为您应该丢弃检索到的行,但表中当前未显示这些行以节省内存。

这个问题并不容易,实现方式可能会有所不同。您可以保持打开的连接并从ResultSet中读取,每次都可以打开一个新连接...如果检索行花费太多时间,则用户在检索新行时会遇到滚动“冻结”的情况。另一个问题是计算总行数,因为表需要几个操作(计算可用的滚动...),因此在非常大的查询中实现getRowCount()可能会出现问题。您应该先执行SELECT COUNT才能获取总行数,然后执行SELECT开始获取它们。

小建议是从数据库检索所有行并将其传递给表。如果总行数不是太大(JTable可以毫无问题地处理这样的行数(需要一些内存!),滚动将非常流畅,并且仅执行一次数据库访问。如果您知道用户不会滚动整个行集,请尝试采用另一种技术,例如限制从数据库返回的行总数,设置过滤器并获取所有行(例如限制为100)并在该表以避免内存使用和数据库访问。

在Java 1.4.1和Pentium IV(2004)时代,我们用数据库返回的所有行填充JTable,将它们限制为10000(在Oracle中为ROWNUM

关于java - Java JTable滚动 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7443025/

10-11 22:38
查看更多