【发布时间】:2020-02-16 22:47:22
【问题描述】:
我正在做一个项目,我需要在特定目录中的多个图像之间切换以用作我的程序的背景。不幸的是,我无法将所有图像路径作为 url 硬编码到 fxml 中,并使用 fxids 在每个路径之间切换,因为我有太多图像,并且整个星期都会添加新图像。我创建了一个 fxid,它链接到保存图像路径的特定变量。此变量是一个 url,其路径为“@../images/Planets/image1.png”。 fxml 正确加载按钮元素,但无法加载与给定变量关联的链接 url。我取了确切的 url 并将其直接放入 fxml 中,从而正确显示了一张图像。我需要帮助才能在 fxml 中正确识别 url 变量。下面是我的 fxml 代码。
<AnchorPane fx:id="AP" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="main.java.controllers.PlanetController">
<children>
<fx:define>
<URL fx:id="image"/>
</fx:define>
<ImageView fitHeight="721.0" fitWidth="1289.0">
<image>
<Image url="$image"/>
</image>
</ImageView>
<Button fx:id="map" layoutX="709.0" layoutY="685.0" mnemonicParsing="false" onAction="#handleNext" text="Map" />
<Button layoutX="428.0" layoutY="690.0" mnemonicParsing="false" text="Market" />
</children>
</AnchorPane>
这是加载 fxml 文档的 javafx 代码。忽略根控制器。它将场景设置为 vBox。
@FXML
private URL image;
@FXML
public void handleTravelToRegion() {
image = new URL("@../images/Planets/image4.jpg");
try {
URL url = this.getClass().getResource(getScene("destinationPlanet"));
FXMLLoader loader = new FXMLLoader(url);
Node scene = loader.load();
rootController.setScene(scene);
} catch (IOException e) {
e.printStackTrace();
}
}
请帮我获取<Image url="$image"/> 以加载图像变量。非常感谢您的帮助。
【问题讨论】: