我一直未尝试使用fxml在JavaFX应用程序中显示图像。 我的代码:
...
<ImageView fitHeight="24" fitWidth="24"
pickOnBounds="true" preserveRatio="true">
<Image url="@res/icon.png"/>
</ImageView>
...
没有错误,但是我的图像没有显示。我认为图片已加载,但未显示。
这可能吗?我该如何检查?如果是这样,应该不会有错误吗?
事实上,即使我输入了错误的名称,也不会出现运行时错误。也许未加载?
我也尝试加载不同的图像并更改尺寸,没有任何效果。
我试过了:
-
"/res/icon.png"
->运行时错误#1 -
"res/icon.png"
-> Lint错误+运行时错误#1 -
"/../res/icon.png"
-> Lint错误+运行时错误#1 -
"../res/icon.png"
-> Lint错误+运行时错误#1 -
"@/res/icon.png"
->运行时错误#2 -
"@res/icon.png"
->棉绒错误(我在使用什么) -
"@/../res/icon.png"
-> Lint错误+运行时错误2 #li -
"@../res/icon.png"
->棉绒错误,无显示
运行时错误#1:Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found
运行时错误2:Caused by: javafx.fxml.LoadException: Invalid resource: /res/icon.png not found on the classpath
(我知道我们不应在网址中使用..或.。我只是在测试)
我见过:
- Why does Image don't load in JavaFX正是我的配置。
- How to show image using ImageView,从中可以正确地链接fxml中的图像。没有错误,但图像未加载/显示。
- ImageView does not work,但我只想在fxml 中这样做。
- Can't load JavaFX Image再次仅是fxml。
- Cannot load Image in JavaFX再次仅是fxml。
- Load Image to ImageView JavaFX再次仅是fxml。
- JavaFX Image loading error我没有使用CSS。
- JavaFX image loading in background and threads不是我感兴趣的内容。
- How to determine correct path...非常广泛,但是fxml呢?
编辑:我重新创建了原始项目的副本,并按照注释尝试了故障排除。
结果(响应故障排除部分):
-
正确的映像名称 :名称有效,并且映像已正确部署到
out
文件夹中。但是它无法被IDE识别,并导致错误或无显示。 -
正确的路径
a)绝对网址
有趣的是,getclass().getResource("/res/icon.png").getExternalForm()
方法给出:
file:/C:/Users/Chander%20Shekhar/IdeaProjects/TestRes/out/production/TestRes/res/icon.png
并起作用。不知道file:
是否应该在那里。 getPath()
方法提供:
/C:/Users/Chander%20Shekhar/IdeaProjects/TestRes/out/production/TestRes/res/icon.png
并且不起作用(运行时错误#1)。删除第一个/
会导致另一个错误:
Caused by: java.lang.IllegalArgumentException: Invalid URL: unknown protocol: c
b)相对网址
所以我实际上在我的res
文件夹中做了一个标记类,并使用了ImageMarker.class.getResource("icon.png").toExternalForm()
file:/C:/Users/Chander%20Shekhar/IdeaProjects/TestRes/out/production/TestRes/res/icon.png
与第一个示例相同,并且有效!
- Classpath :我还确保我有来自项目根目录
src
的相对地址(我相信这是类路径根目录。{{ 3}}?)
但是最后,所有这些都是无关紧要的,因为我使用的是fxml。上帝!