【问题标题】:How to correctly specify URL for ImageView in SceneBuilder如何在 SceneBuilder 中正确指定 ImageView 的 URL
【发布时间】:2019-05-09 11:07:48
【问题描述】:

我的项目结构如下:

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

根据我的项目结构,如何正确指定图像路径?

【问题讨论】:

  • 你使用load(InputStream)方法加载fxml吗?
  • @fabian Yeahhhhhh 一定是这样。我已经通过使用 load() 而不是 load(InputStream) 来修复它

标签: java eclipse javafx


【解决方案1】:

在fxml文件中设置图片的相对路径为图片路径。

 <ImageView fitHeight="17.0" fitWidth="22.0" pickOnBounds="true" preserveRatio="true">
           <image>
              <Image url="@/com/hello/image.png" />
           </image>
 </ImageView>

【讨论】:

    【解决方案2】:

    试试这个方法。

    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 开头它可以识别资源。

    希望你得到答案。

    【讨论】:

      猜你喜欢
      • 2016-11-07
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2016-11-05
      • 2016-08-07
      • 1970-01-01
      相关资源
      最近更新 更多