我有一个使用 graniteds+javafx+spring 的小型测试项目。我遵循了本教程GraniteDs+JavaFx。
一切正常,但如果我使用一个 fxml 文件,其中我有一些具有相对 url 的图像,如本例所示:
<children>
<ImageView fitHeight="32.0" fitWidth="32.0" layoutX="14.0" layoutY="14.0" onMouseClicked="#menuHome" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../images/icons/home.png" />
</image>
</ImageView>
我有这个例外:
SEVERE: Could not show view
javafx.fxml.LoadException: Base location is undefined.
at javafx.fxml.FXMLLoader$Element.processPropertyAttribute(FXMLLoader.java:283)
at javafx.fxml.FXMLLoader$Element.processInstancePropertyAttributes(FXMLLoader.java:197)
at javafx.fxml.FXMLLoader$ValueElement.processStartElement(FXMLLoader.java:570)
at javafx.fxml.FXMLLoader.processStartElement(FXMLLoader.java:2314)
at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2131)
at org.granite.client.tide.javafx.TideFXMLLoader.load(TideFXMLLoader.java:49)
加载 FXML 的代码是这样的:
private Parent showView(Stage stage, boolean loggedIn) {
try {
Parent root = (Parent) TideFXMLLoader.load(contextManager.getContext(),
loggedIn ? "Home.fxml" : "LoginUi.fxml", loggedIn ? Home.class
: LoginUi.class);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
return root;
} catch (Exception e) {
log.error(e, "Could not show view");
}
return null;
}
有没有办法用 TideFXMLLoader 设置基准位置?
谢谢