我正在使用 Java Swing 制作在线国际象棋(客户端-服务器),我已经能够毫无问题地制作出国际象棋表格,但在大厅中我正在显示用户的头像,问题是,用户可以通过服务器更改他的头像,但是当我调用新图像的 setIcon
时,它不会刷新它。
说明:
用户首先从服务器下载默认图像(Avatar.jpg),如果他更改了它,服务器会将他选择的与前一个图像同名的新图像发送到客户端,因此它会被替换。但是当我调用这个新图像的setIcon
(下载后)时,它不会执行任何操作,并且标签会显示他设置的第一个图像。我正在检查文件夹,并且图像正在从服务器发送到客户端,没有任何问题,而我让客户端刷新头像的唯一方法是关闭并打开应用程序。有什么想法吗?我尝试重新打印我能找到的所有随机内容,但仍然没有解决方案,并且标签由 clickedListener 刷新。
我用这一行来设置图像:
this.JLProfilePic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/View/Images/avatar.jpg")));
Edit1:我没有使用 JApplet
,但我仍然不知道问题可能源自何处,因为我能够将标签图标更改为任何图像,但是当每当我尝试将图标更改为 Avatar 时,即使在文件夹中您可以看到 Avatar.jpg 不一样,它仍然显示前一个图标,它已更改为新图标。
Edit2:嗯,我仍然没有找到任何解决方案,我想可能是真的,因为我 setIcon 一次,当程序重新访问它所访问的同一图像时,图像就会保存在缓存中缓存而不是再次检查文件的来源。不确定,但这是我能做出的唯一逻辑。
最佳答案
试试这个,
Image img = ImageIO.read(new URL("http:\Server_IP:Port\image.jpg"));
setIconImage(img);
关于java - Image.setIcon(Parameters) 不刷新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569630/