java - 在网格中显示大量图像

标签 java swing memory-management bufferedimage

我有一个应用程序,我想在其中显示一些图像组件。这其中的每一项都是一个 custom jcomponent,它将在 BufferedImage 对象中包含图像,以在 paintcomponents(Graphics g) 覆盖方法中绘制它.我还将使用 JPanel 作为网格,使用 gridlayoutflowlayout 放置自定义图像 jcomponents,网格的布局将在 JscrollPane 内。

我的问题是当我必须放入网格中的图像数量变大时会发生什么。使用jscrollpane,组件的数量,也就是必须绘制的图片的数量会减少,比如20-30个组件,但是插入到网格中的每个组件都会有一个BufferedImage对象来保留相应的图像。这对性能和内存消耗不利吗?可以使用一些模式吗?例如,如果我使用一个主要引用点将图像从磁盘加载到 bufferedimage 并根据 scrollpane 的哪个矩形,用户然后在他们存放的地方释放一些 bufferedimage在 jscrollpane 的当前位置的网格中?

谢谢。

最佳答案

您将必须对基本变量进行原型(prototype)设计并对结果进行分析。然后将这些结果与最低公分母目标平台上的可用功能进行比较。一个sscce是无价的。这one ,例如,可以让您轻松改变 N,即图像数量。

提到了一些替代 View here .

评论中指出:为了节省内存,请考虑 LRU cache .

关于java - 在网格中显示大量图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11763435/

相关文章:

java - 顶部带有横幅的 JTabbedPane

java - 如何使用 Android 版 Room 重新声明 @Embedded 的索引?

java - 是否可以用 Java 创建自己的 XMPP 服务器

c - 哪个更可能浪费更少的内存,一个大内存管理器还是几个小内存管理器?

java - 拆分字节数组

java - 旋转矩形并以正弦波方式移动它 - 使用graphics2D帮助

java - 使用 IDEA 8M1 运行 Swing 应用程序的问题

java - 在 Java 中使用 JButton 打开后窗口无法正确显示

iphone - 我还能如何避免泄漏这个 Core Foundation 对象?

linux - 64 位 Linux 上的进程内存和 CPU 限制?