0

我在单击按钮后无法添加图像,我只添加了带有 jlabel/imageicon 的代码

JLabel picture;     
public Check() {   
    picture = new JLabel(createImageIcon("images\\exit.png"));   
    add(picture, BorderLayout.WEST);   
}   

 public void actionPerformed(ActionEvent e) {   
    picture.setIcon(createImageIcon("images\\update.png"));   
    }   

protected static ImageIcon createImageIcon(String path) {   
    java.net.URL imgURL = Check.class.getResource(path);   
    System.err.println(imgURL);   
    if (imgURL != null) {   
        return new ImageIcon(imgURL);   
    } else {   
        System.err.println("Couldn't find file: " + path);   
        return null;   

    }   
}  

我的路径总是为空,可能是什么问题

当我测试另一种方式时,图像路径是正确的,

public Check() {   
String imgStr = "images\\exit.png";   
     ImageIcon image = new ImageIcon(imgStr);   
     JLabel label1 = new JLabel(image, JLabel.CENTER);   
     JPanel South = new JPanel();   
     South.add(label1);   
     add("South", South);   
} 

图像出现,但这是在我运行它时完成的,图像已经存在,而不是当我单击按钮时。

谢谢

4

2 回答 2

0

请尝试picture.setIcon(createImageIcon("/images/update.png"));,因为看起来您的图像是从类路径加载的。

看这里:

查找具有给定名称的资源。如果没有找到具有此名称的资源,则此方法返回 null。搜索与给定类关联的资源的规则由该类的定义类加载器实现。

在对资源名称进行以下更改后,此方法将调用委托给其类加载器:如果资源名称以“/”开头,则它不变;否则,在转换“.”之后,包名称将附加到资源名称之前。到 ”/”。如果此对象由引导加载程序加载,则调用委托给 ClassLoader.getSystemResource。

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Class.html#getResource%28java.lang.String%29

于 2013-04-02T07:23:56.513 回答
0

或者您可以简单地在执行的操作方法中添加这一行。

 picture = new JLabel(new ImageIcon("/images/update.png"));
于 2013-04-02T07:29:25.853 回答