【问题标题】:Java fx-8. How to configure path to local image using fxml fileJava FX-8。如何使用 fxml 文件配置本地图像的路径
【发布时间】:2019-05-28 13:04:49
【问题描述】:

在我的 javaFX 应用程序中配置本地图像的路径时遇到了一些麻烦。 我想在我的按钮上使用图标,但它不适用于本地图像,只能用于外部资源。这是我的代码:

            <Button fx:id="magicWangButton" mnemonicParsing="false" onAction="#magicWang" text="Magic wang">
                <graphic>
                    <ImageView fitHeight="20.0" fitWidth="20.0" pickOnBounds="true" preserveRatio="true">
                        <image>
                            <!--<Image url="/fxml/img/magic-wang.png" />-->

                            <Image url="https://i.stack.imgur.com/y1evM.png" />
                            <!--<Image url="/fxml/img/site-logo.png" />-->
                            <Image url="img/magic-wang.png"/>
                        </image>
                    </ImageView>
                </graphic>
            </Button>

这个字符串很好用:

<Image url="https://i.stack.imgur.com/y1evM.png" />

,但其他... 我的图片位于路径:resources/fxml/img/ 位于 fxml 目录中的所有 fxml 文件。 我看到了其他问题和答案,但它使用 java 文件中的配置,但这不是我要找的。​​p>

【问题讨论】:

    标签: image url javafx


    【解决方案1】:

    您可以通过以@ 开头的属性值来指定相对于fxml 的路径,请参阅Introduction to FXML: Location Resolution

    <Image url="@img/site-logo.png" />
    

    【讨论】:

      【解决方案2】:

      诀窍是网址以“@”开头并调用FXMLLoader.setLocation()

      • 相对 URL:
        • @one24.png:
        • @image/two24.png
        • @../three24.png
      • 绝对网址:
        • @/four24.png
        • @/image/five24.png

      请注意,我已经实现了一个实用程序类:FXMLLoaders

      如果您坚持以下命名约定:

      • MyComponent.java
      • MyComponent.fxml(与 MyComponent.java 相同的包)
      • MyComponent.properties(与 MyComponent.java 相同的包)

      您可以使用以下代码:

      对于基于 fx:root 的 FXML 文件:

      public MyComponent() {
          FXMLLoaders.loadRoot(this);
      }
      

      否则:

      Parent root = FXMLLoaders.load(FxmlSampleApplication.class);
      

      该库可从 Maven Central 获得:

      <dependency>
          <groupId>org.drombler.commons</groupId>
          <artifactId>drombler-commons-fx-core</artifactId>
          <version>0.13</version>
      </dependency>
      

      您可以在GitHub 上找到加载图像的完整示例。

      我还写了一个blog post 关于这个实用程序类和命名约定。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-11
        • 1970-01-01
        • 2015-03-14
        • 2019-06-20
        相关资源
        最近更新 更多