是否有替代getClass()。getResource()的静态ImageIcon

好的,我得到了一个静态的ImageIcon,而图像并没有显示出来。在同一个程序中,我使用其他ImagesIcon,但它们不是静态的,所以当我声明它们时,我这样做:

public ImageIcon blabla = new ImageIcon(getClass().getResource(blabla.png)); 

但是,如果我声明一个ImageIcon静态我不能使用该行,因为无法从静态值获取对getClass()的访问。现在,这些图像没有显示出来:

public static ImageIcon blabla = new ImageIcon(blabla.png); 

谢谢你的帮助!

public static ImageIcon networkOfflineIcon = new ImageIcon("Images/networkOfflineIcon.png");
public static ImageIcon networkIcon = new ImageIcon("Images/networkIcon.png");
protected static JMenuItem jmiRemote = new JMenuItem("  Remote", networkOfflineIcon);
//************************************************************************
public static void changeNetWorkStatus(boolean network_status)          
//************************************************************************
{
    if(network_status){
        Application.jmiRemote.setIcon(networkIcon);
        Application.jmiRemote.setText("NetWork Online/Remote is On");
        Application.lockScreenRemote();

    }else if(!network_status){
        Application.jmiRemote.setIcon(networkOfflineIcon);
        Application.jmiRemote.setText("NetWork Offline/Remote is Off");
        Application.unlockScreenRemote();
    }
}//DOESNT CHANGE THE IMAGE
//************************************************************************
0
额外 编辑
意见: 1
尝试避免像 if(t == true)if(t == false)之类的东西,使用 if(t)if(!t)来代替。
额外 作者 rlegendi,

1 答案

在静态的情况下,你可以写:

public ImageIcon imageIcon = new ImageIcon(MyClass.class.getResource("icon.png"));

Or, alternatively try ImageIO.read(new File("icon.png"))

0
额外
现在正常工作谢谢你的快速修复我也会避免(t == true)
额外 作者 Alex,
ImageIO.read 不是最好的建议,因为你需要处理它抛出的异常。我会坚持第一个建议并使用 MyClass.class
额外 作者 Tot Zam,
当然,很高兴帮助。
额外 作者 rlegendi,