让我们说我正在创建一个jar文件,并在资产文件夹中有一个图标,以便包含在jar中。
所以在使用之前,stage.getIcons().add(icon);
在我的代码中,将图标设为
Image icon = new Image("Assets/Icon.png");
Vs以上。
Image icon = new Image(getClass().getResourceAsStream("Assets/Icon.png"));
两者似乎工作得很好,所以我想确定一般应该倾向于哪些以及为什么。
有一个相关主题here,但它主要将加载方式与网络应用程序进行比较。
答案 0 :(得分:3)
javafx.scene.Image(String)
调用validateUrl
,对String
值进行额外处理,包括检查资源的当前Thread
s contextClassLoader
。
使用类似Class#getResourceAsString
之类的东西的好处是你已经为这个类做出了决定,这个决定会(稍微)更快,但也会更不明确,如果你有问题可能更容易诊断(当您控制图像本身的源机制时,并且不会将决策权交给您不能立即控制的代码(因为validateUrl
是private static
,所以不能更改)< / p>