Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.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 Image.setIcon(参数)未刷新标签_Java_Swing_Icons_Refresh_Set - Fatal编程技术网

Java Image.setIcon(参数)未刷新标签

Java Image.setIcon(参数)未刷新标签,java,swing,icons,refresh,set,Java,Swing,Icons,Refresh,Set,我正在使用Java Swing制作一个在线象棋(客户端服务器),我已经能够毫无困难地制作出奇妙的棋盘形式,但在大厅里我展示了用户的化身,问题是,用户可以通过服务器更改他的化身,但每当我调用新图像的设置图标时,它不会刷新它 说明: 用户从服务器下载一个默认图像(Avatar.jpg)开始,如果他更改了它,服务器会将他选择的新图像发送给客户端,该图像与前一个图像同名,因此会被替换。但是,每当我调用这个新图像的setIcon(下载后),它不会做任何事情,标签会粘在一起显示他设置的第一个图像。我正在检查

我正在使用Java Swing制作一个在线象棋(客户端服务器),我已经能够毫无困难地制作出奇妙的棋盘形式,但在大厅里我展示了用户的化身,问题是,用户可以通过服务器更改他的化身,但每当我调用新图像的
设置图标时,它不会刷新它

说明:

用户从服务器下载一个默认图像(Avatar.jpg)开始,如果他更改了它,服务器会将他选择的新图像发送给客户端,该图像与前一个图像同名,因此会被替换。但是,每当我调用这个新图像的
setIcon
(下载后),它不会做任何事情,标签会粘在一起显示他设置的第一个图像。我正在检查文件夹,并且图像正在从服务器发送到客户端,没有任何问题,而让客户端刷新化身的唯一方法是关闭和打开应用程序。有什么想法吗?我试着重印我能找到的每一个随机的东西,但仍然没有解决方案,标签会被点击的听众刷新。 我使用此行设置图像:

this.JLProfilePic.setIcon(new javax.swing.ImageIcon(getClass().getResource("/View/Images/avatar.jpg")));   
Edit1:我没有使用JApplet,我仍然不知道问题可能出在哪里,因为我可以将标签图标更改为任何图像,但当我尝试将图标更改为Avatar时,它仍然显示上一个图标,即使在文件夹中可以看到Avatar.jpg不一样,它换了一个新的

Edit2:我还没有找到任何解决方案,我的假设可能是真的,也可能不是真的,因为我设置了图标一次,当程序重新访问它进入缓存的同一个图像时,图像会保存在缓存中,而不是再次检查文件的源。不确定,但这是我能做的唯一逻辑。

试试这个

Image img=ImageIO.read(新URL(“http:\Server\u IP:Port\Image.jpg”)


setIconImage(img)

这是日本货吗?如果是这样,听起来像是缓存问题。我不是100%确定,但在某些情况下,在创建ImageIcon之前先通过
ImageIO.read(…)
获取图像有助于实现这一点,但我不确定在这种特殊情况下是否如此。我在等待更多更好的专家意见。我想,这里提出的问题,可以通过教程中提供的第一个示例来解决,下载完成后,它才会显示给用户,我曾经尝试过在
JTextPane
中打开一个URL,但问题相同,似乎
SwingWorker
也是这个问题的答案:-)此外,在我看来,这个问题与您确实没有在EDT上更新GUI有关。您好,谢谢您的回答。你说的有两个问题:1。我想改变的是一个JLabel,所以我不能实际使用setIconImage,因为它是用于窗口的。2.当客户端从服务器下载图像时,它会放在文件夹Images中,因此我实际上不需要从URL读取图像,因为它是放在项目文件夹中的JPG文件。