按钮点击后图像不显示

时间:2013-04-02 00:57:33

标签: java netbeans jlabel imageicon

单击按钮后添加图像时出现问题,我只添加了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;   

    }   
}  

我的路径总是为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);   
} 

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

谢谢

2 个答案:

答案 0 :(得分:0)

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

见这里:

  

查找具有给定名称的资源。如果不是,则此方法返回null   找到具有此名称的资源。搜索资源的规则   与给定类关联的是由*定义类实现的   班级装载机。

     

这个方法在调用之后将调用委托给它的类加载器   更改资源名称:如果资源名称以“/”开头,则为   没有变化;否则,包名称将预先添加到资源中   转换后的名称“。”至 ”/”。如果这个对象是由   bootstrap loader,将调用委托给   ClassLoader.getSystemResource。

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

答案 1 :(得分:0)

或者您只需在动作执行方法中添加此行。

 picture = new JLabel(new ImageIcon("/images/update.png"));