【问题标题】:Referencing class resource in FXML在 FXML 中引用类资源
【发布时间】:2014-02-07 03:14:01
【问题描述】:

我有一个使用 Maven 的 JavaFX 程序,带有一个标准的 maven 文件树:

我如何从 layout.fxml 中引用 logo.png,假设布局被调用

Parent root = FXMLLoader.load(getClass().getResource("/fxml/layout.fxml"));

MainApp

我正在尝试使用

<image>
<Image url="@/graphics/logo.png" />
</image>

并在该文件路径上尝试了许多变体(有和没有@),但继续抛出一个

java.lang.reflect.InvocationTargetException 
... 
Caused by: java.lang.IllegalArgumentException: URL must not be empty

在创建 URL 的那一行

【问题讨论】:

    标签: java maven javafx


    【解决方案1】:

    您正在尝试查找名称为“backButton.png”的图像资源,而它应该是“logo.png”。

    如果问题仍然存在,请尝试

    <Image url="@../graphics/logo.png" />
    

    official FXML tutorial:

    位置解析运算符(由“@”前缀表示 属性值)用于指定一个属性值应该是 被视为 相对于 当前文件的位置,而不是 简单的字符串。

    【讨论】:

    • 文件名在这里只是一个错字,在我的程序中是正确的。但是,您的建议没有帮助。恐怕这是因为如果@ 是相对于fxml 文件,graphics 不能作为子文件夹访问。它是父 resources 文件夹下的 fxml 文件夹的兄弟。
    • @drewmore, ".." 表示当前位置的父文件夹,即FXML文件夹的父文件夹。所以路径“../graphics”是正确的。确认包结构,解压生成的 jar 文件,检查文件夹和其中提到的图像的位置。
    • 嘿为什么-1。做这件事的人能解释他/她的行为原因吗?
    猜你喜欢
    • 1970-01-01
    • 2013-11-05
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-23
    相关资源
    最近更新 更多