我正在使用Java Swing制作在线国际象棋(客户端-服务器),我能够毫无问题地完美制作国际象棋表格,但是在大厅中,我向用户展示了头像,问题是,用户可以通过服务器更改其头像,但是当我调用新图像的setIcon时,它不会刷新它。

说明:

用户从服务器上下载一个默认图像(Avatar.jpg)开始,如果他更改了该图像,则服务器会将他选择的新图像发送给客户端,该图像与上一个图像具有相同的名称,因此它将被替换。但是,当我每次调用此新图像的setIcon(下载后)时,它都不会执行任何操作,并且Label会粘贴以显示他设置的第一张图像。我正在检查文件夹和图像是否从服务器发送到客户端而没有问题,而让客户端刷新头像的唯一方法是关闭并打开应用程序。有任何想法吗?,我尝试重印我仍然找不到解决方案的所有随机事件,并且标签由clickedListener刷新。
我使用此行设置图像:

this.JLProfilePic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/View/Images/avatar.jpg")));


Edit1:我没有使用JApplet,但我仍然不知道问题可能出在哪里,因为Im可以将Label Icon更改为任何图像,但是每当我尝试将Icon更改为Avatar,即使在文件夹中您可以看到Avatar.jpg也不一样,它仍然显示前一个,而是将其更改为新的。

Edit2:好吧,我仍然没有找到任何解决方案,我想这可能是对的,因为我一次设置了setIcon,当程序重新访问它进入缓存的同一图像时,该图像会保存在缓存中再次检查文件源。不确定,但这是我唯一可以做的逻辑。

最佳答案

尝试这个,

图片img = ImageIO.read(新的URL(“ http:\ Server_IP:Port \ image.jpg”));

setIconImage(img);

关于java - Image.setIcon(Parameters)不刷新标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10569630/

10-10 07:31