检索ImageIcon的路径

时间:2014-01-18 08:58:44

标签: java netbeans jlabel imageicon

我有一个已经有图标的jlabel,我想在从标签退出鼠标时更改图标,我试过这段代码,它显示没有语法错误

private void LabelMouseExited(java.awt.event.MouseEvent evt) {                                   

if(Label.getIcon().toString().equals("cyberjayacinema/images/Blue%20E1"))
    {
        Label.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cyberjayacinema/images/red E1.PNG")));
    }

else
    {
            Label.setIcon(new javax.swing.ImageIcon(getClass().getResource("/cyberjayacinema/images/white E1.PNG")));
    }

但只有 else 情况有效,但 imageicon 设置为 if 情况,所以我猜错误是检索图标的路径,我假设我写 getImageIcon 的方式错了, 我希望有人可以帮助我。 谢谢

2 个答案:

答案 0 :(得分:1)

如果你只是放System.out.println(label.getIcon().toString()),你会得到类似的东西,这个

file:/C:/NetBeansProjects/StackOverflow/build/classes/resources/stackoverflow5.png

如您所见,这与您的情况不符。

你可能想做这样的事情,只获取文件名

String iconfilename = label.getIcon().toString();
String fileName = iconfilename.substring(iconfilename.lastIndexOf("/"  ) + 1);
System.out.println(fileName);

// output
stackoverflow5.png

然后检查文件名。

if ("stackoverflow5.png".equals(fileName)) {
    do something
}

答案 1 :(得分:0)

如果您尝试访问项目文件夹中的图像,这可能对您有所帮助

 Lable test;
java.net.URL url = ClassLoader.getSystemResource("res/image.png");
test.setIconImage(Toolkit.getDefaultToolkit().getImage(url));