java - 如何实现滚动到底部时刷新的 JTable

标签 java swing user-interface jtable tablemodel

我正在尝试了解 Swing 应用程序,特别是表格的工作原理。有一个从数据库中检索数据并将数据显示在 JTable 上的表。我浏览了代码并弄清楚了如何从数据库中读取数据。

我似乎苦恼的一件事是数据在表格上的显示方式以及数据的更新方式。我知道如何在表格上显示数据,但与此表格的不同之处在于数据是动态更新的。即,并非所有从数据库中检索到的数据都显示在表中。

看起来应用程序显示了很多行,当用户滚动鼠标或将滚动条移动到表格的底部/末尾时,应用程序会自动更新表格并显示更多数据(我可以看到有发生这种情况时会稍有延迟)。

为了能够弄清楚上述内容是如何实现的,我需要有关此技术的更多信息,即这种技术称为什么以及使用的常用接口(interface)/类是什么。

指向如何实现上述目标的示例的链接将非常有用,因为我需要先查看简化版本。

有什么想法吗?

谢谢

最佳答案

我不确定这种技术叫什么名字,但我知道它现在在移动世界中很常见(例如 Twitter 和 Facebook 应用程序使用它)。出于实际目的,实现可能是具有一些修改过的组件的普通 JTable。

  1. 编写您自己的 TableModel 来显示数据(这很容易做到),您可以从任何地方检索信息,并根据需要添加/删除数据。引用文档 here .只有少数几个方法需要实现

    这里最重要的是 getRowCount() 方法,您可以在从表中添加/删除数据时更改该方法,以及 getValueAt( ) 方法检索要在表中显示的数据。

    TableModel 中可能有一个类似数组的对象(例如 ArrayList),其中包含应显示在表格中的数据.当您想从表中添加/删除数据(即“刷新”)时,您只需从该数组列表对象中添加/删除行,然后触发表上的刷新以获取更改。

    或者,如果使用数据库,您可以在 TableModel 中打开数据库 Cursor,该数据库由 getValueAt() 调用 每当您想在表格上显示一个值时。

  2. 您需要覆盖其中一个 GUI 组件,例如 JScrollBar,或者向滚动条添加一个 Listener,以便它检测您何时尝试滚动到表格末尾,并触发刷新。

  3. 在视觉上,如果您想在滚动到表格末尾时显示一些特别的东西(例如显示“Refreshing”一词),则需要覆盖当前外观的一些绘画组件.如果你想在它的“高度”上添加几个刻度,你还需要覆盖 JScrollBar,这样你就可以实际将滚动条移动到“刷新”部分(只是一个显示的东西只有——上面的监听器应该做实际的刷新工作)

关于java - 如何实现滚动到底部时刷新的 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13030196/

相关文章:

user-interface - 如何在 Unity 中拥有不同单元格高度的网格布局组件

android - 关于Android上的UI编程

java - 在服务器客户端条件下使用 USB 驱动程序签署 PDF

java - java-me 支持线程吗?

java - arquillian 中的 “IllegalStateException: Could not find backup for factory javax.faces.context.FacesContextFactory”

java - 获取目录?

java - 无法设置 JApplet 背景颜色

java - 如何将 Gherkin 步骤定义数据映射到 Cucumber 中的 Java 对象?

java - 从另一个 java 类调用方法会创建重复的 JPanel?

java - 每 x 秒执行一次代码