JTable + TableModel 缓存获取事件以进行延迟实例化?

2024-02-26

设想:

您正在使用带有自定义 TableModel 的 JTable 来查看位于数据库或网络或其他位置的某些集合的内容。

完成这项工作的强力方法是立即加载整个集合。假设由于所需资源的原因,这是不切实际的。

解决该问题的简单方法是在 JTable 呈现每一行时按需获取行,一次一行,并调用 TableModel.getValueAt();根据需要缓存。但这会导致数据库受到大量点击。

有没有办法监听 JTable 的滚动/视口事件,以确定在渲染每个单元格之前它将显示哪些行?如果是这样,我想拦截并导致我的自定义 TableModel 一次预取一页。

edit:只是为了澄清一下,这里的重点是能够批量获取一组可见表行的内容,而不是必须单独获取每一行的内容。


看一眼http://www.javaworld.com/javaworld/javatips/jw-javatip137.html http://www.javaworld.com/javaworld/javatips/jw-javatip137.html文章。在本文中,有一个自定义 TableModel,它能够从数据库中检索行的“块”

该场景的另一种解决方案虽然不完全是您正在寻找的,但它是延迟加载每一行而不是预取。请参阅我自己的帖子(在 google 中搜索“JTable 绑定到具有延迟加载的数据库”)了解如何执行此操作。这个想法是,当表模型被请求未缓存/加载的行时,它将为每列返回“wait..retriving”字符串(假设所有列都是字符串)。同时它将在另一个线程中安排任务(使用 ExecutorService)。然后该任务将从数据库中检索数据并更新数据模型。在我的文章中,我实际上使用了 Beans 绑定,因此使用自定义列表而不是自定义表模型。但我相信你可以推断出这个想法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JTable + TableModel 缓存获取事件以进行延迟实例化? 的相关文章

  • 将项目添加到 JComboBox

    我在面板上使用组合框 据我所知 我们可以仅添加带有文本的项目 comboBox addItem item text 但有时我需要使用项目和项目文本的某些值 例如在 html select 中
  • Java 全屏模式对话框

    如何创建一个可用作内部对话框的自定义模式 JDialog 用于全屏独占模式 我有一个 JScrollPane 带有一个巨大的滚动条 里面充满了巨大的按钮 如下所示 FOO BAR BIZ
  • 在 SWIXML 中将异常字符显示为按钮文本

    我有以下 SWIXML 代码
  • Flask:缓存静态文件(.js、.css)

    我真的找不到任何这方面的资源 那么如何将视图 函数的缓存与静态文件 即 css js 分开 我想将静态对象缓存一周 另一方面 我只需要缓存函数 视图几分钟 当我执行以下操作时 from flask ext cache import Cach
  • Spring Boot,使用 EhCache 进行缓存

    我需要在我的应用程序中缓存一些数据 我正在考虑使用 Ehcache 我有几个问题 Ehcache需要另外一台服务器吗 我需要其他客户端来使用 Ehcache 吗 Ehcache 如何与多个实例配合使用 是否有可能使用 Ehcache 创建类
  • 调整双 JTable 中列大小的问题

    我正在创建一个包含 2 个 JTable 的自定义组件 一个作为主数据网格 另一个作为始终可见的摘要栏 我已经提出了这个解决方案 但是调整列大小并没有按应有的方式工作 任何想法我做错了什么 import java awt BorderLay
  • 无法让 Azure 缓存正常工作。 “暂时出现故障,请稍后重试。”

    那么 今天我 安装了azure SDK 2 1 并且 使用单个 WorkerRole 创建了一个新项目 使用 NuGet 获取缓存包 将角色的缓存设置为 并置 在 app config 中将主机设置为 WorkerRole1 评论安全部分
  • Java:用于显示差异的 GUI 组件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一个程序 需要在其中生成差异并显示结果 是否有任何 GUI 组件可以让我轻松完成此任务 或者我
  • 不可靠网络和低带宽的 Java ORM 策略

    我正在寻找 Hibernate 作为需要在不可靠网络中工作的系统 我们需要对一个中央数据库进行读写访问 但它可以通过一个相当不稳定的 Wi Fi 网络来访问 此外 可能会出现断电而导致应用程序无法完全关闭的情况 因此任何解决方案都必须具有能
  • 如何使用 BoxLayout 设置容器内的组件大小

    我在使用时遇到问题BoxLayout 在我的示例中 我尝试减小文本字段的高度并更改按钮的宽度 如底部图片中的绿色标记所示 我了解技术setPreferredSize and setMaximumSize 但它没有发挥应有的作用 线路add
  • 当容器大小更改时,JTable 仅调整选定列的大小

    对于面板内的 JTable 如果面板变大 我如何将额外的空间仅分配给某些列 在我的例子中 分配给最后一列 尽管提供 第 3 4 列和8 将获得额外的空间 我想允许用户手动更改所有列的列大小 我尝试了 table setAutoResizeM
  • 如何在高速缓存中存储图像

    我对此完全空白 我想从 URL 下载图像 并且必须将其存储在内部 以便下次我不需要连接到网络 而是从缓存中检索它 但我不知道该怎么做 谁能帮我提供一个代码片段 import java io BufferedInputStream impor
  • 如何将 JTable 中的数据导出到 CSV

    我只是在启动一些代码从 JTable 中提取值时遇到问题 以便最终可以将它们作为 CSV 文件在 Excel 上查看 目前我有一个使用以下代码创建的 JTable package com alpha import javax swing i
  • 使用 NSCache 实现缓存过期

    我正在使用 NSCache 在我的应用程序中实现缓存 我想为其添加过期时间 以便在一段时间后它将获取新数据 有哪些选择以及最好的方法是什么 我应该查看访问缓存时的时间戳并使之无效吗 缓存是否应该通过使用固定间隔计时器自动使自身失效 缓存是否
  • JTextArea - 双击/三次单击 + 移动鼠标的选择行为

    问题 当您双击 JTextArea 中的单词时 它会被标记 但是当您不释放鼠标按钮并尝试标记下一个单词时 它不会标记整个单词 而是标记单个字符 移动鼠标 双击 时 它应该标记整个单词 而不是单个字符 这实际上是我尝试过的所有程序的默认行为
  • 为什么 data.table `:=` 的 knit 缓存失败?

    这在精神上与this https stackoverflow com q 15267018 1900520问题 但机制上一定不同 如果您尝试缓存knitr包含一个块data table 分配然后它的行为就好像该块尚未运行 并且后面的块看不到
  • Netbeans 中的 Java 应用程序与 Java 桌面应用程序 [重复]

    这个问题在这里已经有答案了 可能的重复 Netbeans GUI 编辑器生成自己难以理解的代码 https stackoverflow com questions 2561480 netbeans gui editor generating
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • titledBorder 标题中的图标

    您好 是否可以在 titledBorder 的标题中放置一个图标 例如以下代码 import java awt GridLayout import javax swing JFrame import javax swing JLabel i
  • 检测到 JVM 正在关闭

    我有一个使用 addShutdownHook 处理 Ctrl C 的 Swing 应用程序 它工作正常 直到我的关闭任务之一调用一个在正常情况下更改 JLabel 文本的函数 此时它挂起 我认为问题是 Swing EDT 已终止或正在等待某

随机推荐