Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的图像缓存。如何清除记忆?_Java_Image_Caching_Memory_Absolute Path - Fatal编程技术网

Java中的图像缓存。如何清除记忆?

Java中的图像缓存。如何清除记忆?,java,image,caching,memory,absolute-path,Java,Image,Caching,Memory,Absolute Path,我正在开发一个桌面java应用程序。 每个用户都有一个显示个人信息的面板,还有一个配置文件图像。 图像通过Swing JFileChooser添加,存储在文件夹中,其路径作为字符串保存在本地数据库中。 一切正常,除非用户有可能更改图像。 更改图像时,请再次使用jFileChooser,这与从头添加图像相同。新路径已正确存储,但存在缓存问题。 问题是,图像存储在硬盘驱动器中的文件名必须等于当前用户名。从应用程序更改图像将在该文件夹中创建同名的新图像,覆盖上一个图像。 现在: -如果我再次打开用户面

我正在开发一个桌面java应用程序。 每个用户都有一个显示个人信息的面板,还有一个配置文件图像。 图像通过Swing JFileChooser添加,存储在文件夹中,其路径作为字符串保存在本地数据库中。 一切正常,除非用户有可能更改图像。 更改图像时,请再次使用jFileChooser,这与从头添加图像相同。新路径已正确存储,但存在缓存问题。 问题是,图像存储在硬盘驱动器中的文件名必须等于当前用户名。从应用程序更改图像将在该文件夹中创建同名的新图像,覆盖上一个图像。 现在: -如果我再次打开用户面板,将显示“旧”图像,因为新图像和旧图像路径相同,java使用缓存图像而不是重新加载它 -关闭并重新启动应用程序将解决问题,因此路径正确存储在数据库中,并且问题必须与缓存内存有关。 请帮帮我!
提前感谢您的回复

Java不会这样做。你的代码可以。但是你没有发布任何一行,所以我们没办法,Java就是这么做的。简单地说:我有一个带有相对于绝对路径的图标的jlabel。如果我更改路径所指向的图像,保留相同的名称,则该路径仍然有效,但java继续使用“旧”图像,而不是修改后的图像,这是缓存的原因之一。调用jlabel.setIcon()之前,对imageIcon进行刷新()可以解决此问题。