3

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

我正在尝试获取单击按钮时更新图像的方法。但是,当单击按钮时,没有任何变化。方法调用正确地写入了 MouseListener。所有 JLabels / 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 时添加了一个图像并显示它,但在调用方法时它永远不会被删除。

4

2 回答 2

3

与其替换整个图像组件,不如考虑更新组件的图像,如本所示,或更新标签的图标,如下所示

于 2013-05-17T15:05:44.547 回答
0

打电话validate()而不是repaint()

于 2013-05-17T13:08:06.613 回答