如何从静态方法加载图像

我有JavaFX应用程序,我想从静态Java方法调用此代码。

Image icon = new Image(getClass().getResource("/images/system-help.png").toExternalForm()); 

但是我收到了这条警告信息:

 non-static method getClass() cannot be referenced from a static context 

你能告诉我重写这段代码以便将它用于静态方法的正确方法是什么?

一句建议=>不要这样做。

一般来说,Jeffery的回答提供了初始化静态资源的方法,但是将它应用于加载JavaFX Image可能不是一个好主意。

由于RT-30796在初始化“内部图形”之前无法创建JavaFX图像 ,因此不建议尝试在静态上下文中创建JavaFX图像。

在JavaFX内部图形引擎初始化之前,RT-30796中阻止在静态上下文中加载JavaFX映像的问题可能会或可能不会在JavaFX的未来版本中得到解决。 (需要注册才能查看问题跟踪器,但任何人都可以注册查看它)。

相反,我建议您修改应用程序逻辑以在非静态上下文中创建映像,一旦确定JavaFX工具包已针对您的应用程序进行了适当的初始化(例如,一旦调用了应用程序的init或start方法或者您的JFXPanel创建)。

此外,为了加载JavaFX图像,我不建议使用ImageIO。 ImageIO会创建AWT图像,然后您需要将其转换为JavaFX图像。 使用JavaFX Image构造函数是一种更直接的方法,可以在AWT和ImageIO可能无法使用的嵌入式平台上的紧凑Java配置文件上运行。

在静态上下文中访问类的方法是使用封闭类中的类文字。

例如:

 public class Foo { private static final Image icon; static { icon = new Image(Foo.class.getResource(...)); } } 

使用

 MyClass.class.getResource 

或尝试:

 ImageIO.read(new File("/images/system-help.png"))