有没有getClass().getResource()方法的替代品用于静态ImageIcon?

7

好的,我有一个静态的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
//************************************************************************

尽量避免使用 if (t == true)if (t == false) 这样的写法,而是使用 if (t)if( ! t ) - rlegendi
1个回答

4
在静态环境中,您可以这样写:
public ImageIcon imageIcon = new ImageIcon(MyClass.class.getResource("icon.png"));

或者,您也可以尝试使用 ImageIO.read(new File("icon.png")) 的方法。


现在运行良好,感谢快速修复,我也会避免使用 (t == true)。 - Alex
“ImageIO.read” 不是最佳建议,因为您需要处理它抛出的异常。我建议使用第一个建议并使用“MyClass.class”。 - Tot Zam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接