请原谅我复杂的GUI结构,我对此非常陌生: 图片的网址 - > ImageIcon-> JLabel-> JScrollPane-> JPanel-> JTabbedPane-> JFrame。
这个想法是通过一个按钮来更新图片,该按钮的动作会更新网址的一部分。为确保此按钮确实更改了网址,我有一个JTextfield,它会在按钮点击时显示网址。文本字段中的URL显示更新确实发生,但GUI中的图片保持不变。
创建图像窗格的类:
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
public class MapPicturePanel {
public JScrollPane getContent(BufferedImage image) {
ImageIcon icon = new ImageIcon(image);
JLabel label = new JLabel(icon);
label.setHorizontalAlignment(JLabel.CENTER);
return new JScrollPane(label);
}
}
谢谢。
答案 0 :(得分:2)
每次更改图片时都不要创建新面板。
只需阅读图片,创建一个新的ImageIcon,然后就可以使用:
label.setIcon(...);
并且标签将自动重新绘制。
答案 1 :(得分:1)
更改URL
后添加repaint()命令