`
flyfox1982
  • 浏览: 81028 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ImageIcon缓存问题

阅读更多
在2BizBox 里面选择Image的时候(比如上传图纸的时候),发现一个这样的问题:


第一次上传的时候,选择一个 test.png 文件。

然后把test.png 删除,然后重新建一个 test.png的文件,再次选择test.png的时候,得到的总是前一个图片。 但是如果重新登录就没有这个问题了,所以怀疑是ImageIcon 的缓存造成的。 所以改了一把方法:


 public static ImageIcon getSelectedImageIcon(Component parent) {
File file = getSelectedImageFile(parent);
if (file != null) {
try {
ImageIcon icon = new ImageIcon(file.toURI().toURL());
icon.getImage().flush();
icon = new ImageIcon(file.toURI().toURL());
return icon;
} catch (MalformedURLException ex) {
ex.printStackTrace();
}
}
return null;
}




每次拿到图片后,都flush 一下,然后在重新拿。 不过这样的问题是导致每次拿了两次。

或者在每个用到的地方,调用flush方法,不过这样就会要改的地方很多。
分享到:
评论

相关推荐

    java Swing读取图片

    如果图片数量较多,考虑使用缓存技术避免频繁读取硬盘。可以将加载的`ImageIcon`存储在一个Map中,根据图片名称快速获取。 总之,Java Swing提供了方便的方式来读取和显示图片,无论是简单的展示还是复杂的图像...

    JAVA界面设计——Applet和JFrame图片加载篇

    此外,还可以使用缓存来存储已加载的图片,提高性能。 总的来说,理解和掌握Applet和JFrame的图片加载机制对于进行Java界面设计至关重要。随着JavaFX的兴起,JFrame依然是开发桌面应用的主流选择,而Applet则更多地...

    firebase_image:Fire用于Firebase云存储的缓存Flutter ImageProvider

    用于Firebase云存储映像对象的缓存Flutter ImageProvider。 如何使用 确保已在要使用此平台的所有平台上 。 向FirebaseImage小部件提供图像的URI(例如gs://bucket123/userIcon123.jpg ),然后将其放入接受...

    Java开发的窗体小游戏《连连看》

    - **ImageIcon类**:用于加载和显示图像资源,每个棋子的图标可以通过ImageIcon类加载到游戏界面。 4. **游戏逻辑**: - **匹配规则**:连连看的核心在于棋子的匹配逻辑,通常要求两个棋子在同一行、列或对角线...

    图片浏览小程序(java+applet).zip

    总的来说,这个项目是一个很好的实践机会,可以帮助学生掌握Java GUI编程和Applet技术,同时锻炼他们解决实际问题的能力。通过完成这个项目,他们不仅可以提升编程技能,还能深入理解如何将理论知识应用于实际软件...

    java 图片浏览器

    对于大量图片的加载,可以考虑使用缓存策略,避免频繁的磁盘读取。另外,可以使用缩略图技术,当用户浏览时只加载缩略图,只有在需要时才加载原图,这样可以显著提高加载速度。 8. **图像处理** 如果需要,还可以...

    planeimages.rar

    2. 位图缓存:对于大量重复使用的图像,可以考虑将其缓存为位图,以减少重复加载。 总结,"planeimages.rar"可能包含的是一些用于Java编程的图像资源,结合Java的图像处理技术,开发者可以创建出丰富多样的GUI应用...

    连连看游戏(含代码和报告)

    最后,`连连看游戏.doc` 文件很可能是项目报告,详细记录了游戏的设计思路、实现过程、遇到的问题及解决方案。这类文档对于理解代码结构和功能有着重要的参考价值。 总的来说,连连看游戏的实现涵盖了Java GUI编程...

    Java飞机大战源码

    例如,`JFrame`用于创建游戏主窗口,`ImageIcon`则用来加载和显示飞机及子弹的图片资源。通过布局管理器如`FlowLayout`或`GridBagLayout`,我们可以灵活地组织这些元素在屏幕上的位置。 其次,游戏的核心是游戏循环...

    Java图片渐进显示

    同时,考虑到内存限制,可以采用缓存策略,只保留当前正在显示或即将显示的图像部分,其他部分在需要时再加载。 总的来说,Java图片渐进显示技术涉及了Java图像处理、流式读取、GUI组件更新以及可能的多线程和内存...

    基于Java的打飞机游戏程序设计实现

    Java可以使用`ImageIcon`加载图片,使用`Clip`处理音频。同时,开发者需要考虑资源的缓存和释放,避免内存泄漏。 9. **异常处理**:良好的错误处理是任何软件项目的关键。在游戏中,可能会遇到文件不存在、网络中断...

    中国象棋图片

    此外,利用Java的缓存机制可以避免频繁的磁盘I/O操作,提高应用程序的响应速度。 标签"中国象棋图标"进一步强调了这些资源是与中国象棋游戏相关的图标,意味着它们将被用作游戏的视觉元素。在压缩包中的"image"文件...

    MrioGameForJava.zip

    - 资源缓存:为了提高性能,通常会将频繁使用的资源缓存在内存中。 6. **数据结构与算法**: - 数组和链表:存储游戏关卡地图、敌人位置等信息。 - 广度优先搜索(BFS)或深度优先搜索(DFS):用于路径规划,...

    j2se坦克大战源代码

    9. **性能优化**:为了确保游戏运行顺畅,源代码可能包含了一些性能优化技巧,如减少不必要的计算,适时更新屏幕,以及利用缓存提高数据访问速度等。 10. **调试与测试**:源代码中可能包含调试代码和日志记录,...

    Java植物大战僵尸简易版源代码

    8. **资源管理**:游戏中的图片、音频等资源,可能通过InputStream和ImageIcon等类加载和显示。同时,合理地管理内存和释放不再使用的资源也至关重要。 9. **调试与优化**:源代码可能包含了日志记录和错误处理机制...

    JAVA打飞机游戏毕业设计(源代码+论文)

    资源的加载、缓存和释放也是游戏开发中需要注意的问题,以避免内存泄漏。 8. **测试与调试**:游戏开发过程中,单元测试和集成测试是必不可少的,JUnit是一个常用的Java测试框架。调试工具如Eclipse或IntelliJ IDEA...

    达内飞机大战完整代码资料(java)

    合理地缓存和释放资源可以提高游戏性能,避免内存泄漏。 八、游戏逻辑 游戏的逻辑包括飞机移动规则、敌机生成、分数计算、游戏结束条件等。这部分代码是游戏的核心,需要精心设计和调试,以保证游戏的公平性和趣味...

    Java 动画图标源码(显示GIF图像).zip

    - 为了提高性能,可以预先加载GIF到内存,并将帧缓存起来,避免每次绘制时重复解码。 - 使用双缓冲技术可以减少闪烁,提高用户体验。 7. **代码范例**: - 这个压缩包中的代码可能包含了如何加载GIF文件,解析其...

    java 坦克大战游戏源码

    游戏中的图像、声音等资源通常存储为外部文件,通过Java的ImageIcon或AudioClip类加载。资源的加载、释放和缓存管理是提高游戏性能的关键。 四、游戏状态管理 游戏可能有多个状态,如菜单、游戏进行、暂停、游戏...

    图片查看器(JAVA版)

    2. **ImageIcon类**:在Swing中,`javax.swing.ImageIcon`类用于加载和显示图片。开发者会用这个类来加载图片文件,并将其与特定的组件(如按钮或标签)关联。 3. **MouseListener和ActionListener接口**:为了实现...

Global site tag (gtag.js) - Google Analytics