我具有以下项目结构:
src
com.hello
RootController
resources
com.hello
root.fxml
image.png
在scenebuilder中,我添加了一个ImageView节点,然后将路径设置为@image.png
。它在SceneBuilder中工作正常,但是如果我在Eclipse中运行它,则会出现以下错误:
Caused by: java.lang.IllegalArgumentException: Invalid URL: Invalid URL or resource not found
at javafx.scene.image.Image.validateUrl(Image.java:1118)
at javafx.scene.image.Image.<init>(Image.java:693)
at com.sun.javafx.fxml.builder.JavaFXImageBuilder.build(JavaFXImageBuilder.java:47)
at com.sun.javafx.fxml.builder.JavaFXImageBuilder.build(JavaFXImageBuilder.java:37)
at javafx.fxml.FXMLLoader$ValueElement.processEndElement(FXMLLoader.java:763)
at javafx.fxml.FXMLLoader.processEndElement(FXMLLoader.java:2823)
at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2532)
... 11 more
Caused by: java.lang.IllegalArgumentException: Invalid URL or resource not found
at javafx.scene.image.Image.validateUrl(Image.java:1110)
... 17 more
在给定项目结构的情况下,如何正确指定图像路径?
答案 0 :(得分:1)
在fxml文件中,将图像的相对路径设置为图像路径。
<ImageView fitHeight="17.0" fitWidth="22.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@/com/hello/image.png" />
</image>
</ImageView>
答案 1 :(得分:0)
尝试这种方式。
private ImageView imageView = new ImageView();
String url = "/images/cards/As.png";
Image image = new Image(getClass().getResourceAsStream(url));
imageView .setFitHeight(726); //Set your image Height
imageView .setFitWidth(500); //Set your image width.
imageView .setImage(image);
有时相对路径无法正确识别资源文件,但是/images/cards/As.png
将斜杠/
放在url
处可以识别资源。
希望您能得到答案。