图像未在Swing中更新

时间:2013-05-17 12:44:22

标签: java image swing repaint imageicon

我在GUI中更新图片时遇到问题。除了这些方法之外的所有内容都被正确编码,因为当我在GUI的初始化中编写代码(来自下面的“setImage”方法)时会出现Image。

我正在尝试获取单击按钮时更新图像的方法。但是,单击该按钮时,没有任何更改。方法调用正确地写在MouseListener中。所有JLabel / Images都被声明为私有,因此我可以在方法中调用它们。

public void setImage(String path) {

    //path = "imageName.png"
    removeImageLabel();
    try {
        img = ImageIO.read(new File(path));
    } catch (IOException e) {
        e.printStackTrace();
    }
    imageLabel = new JLabel(new ImageIcon(img));
    imagePanel.add(imageLabel);
    imagePanel.repaint();
}

public void removeImageLabel() { //removes the current image from the GUI
    imagePanel.remove(imageLabel);
}

我有其他方法可以根据按钮点击设置元素,但是这个方法似乎不起作用。不会抛出任何错误,但不会更新任何内容。有什么问题?

注意:我在方法中添加了println()并调用它。

新: 我在创建GUI时添加了一个图像并显示,但是在调用方法时它永远不会删除。

2 个答案:

答案 0 :(得分:3)

不考虑替换整个图像组件,而是考虑更新组件的图像,如此example更新标签的图标就位,如here所示。

答案 1 :(得分:0)

致电validate()而非repaint()