打开新的FXML文件时如何正确使用图像?

时间:2019-06-23 04:49:43

标签: java javafx fxml

我有两个带有各自控制器的FXML文件:

  1. FXMLDocumment.fxml
  2. Home.fxml。

文件1中有一个按钮,使用以下代码打开Home.fxml:

                 Stage stage = new Stage();
                 FXMLLoader loader = new FXMLLoader();
                 Parent root = (AnchorPane) loader.load(getClass().getResource("Home.fxml").openStream());
                 Scene scene = new Scene(root);
                 stage.setScene(scene);
                 stage.initModality(Modality.APPLICATION_MODAL);
                 stage.setScene(scene);
                 stage.show();

一切正常,直到我尝试将图像添加到Home.fxml并显示以下错误(我对其进行了总结):

(...)

null/logohome.png   
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1774)
    at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1657)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 

(...)

Caused by: javafx.fxml.LoadException: 
unknown path:14

    at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601)
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2579)
    at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425)
    at heimdal1.pkg0.FXMLDocumentController.logear(FXMLDocumentController.java:89)
    at heimdal1.pkg0.FXMLDocumentController.onEnter(FXMLDocumentController.java:60)
    ... 59 more
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)

我知道好像我没有正确使用图像的URL,但是令我疯狂的是,我在第一个FXML中使用了相同的图像和相同的URL(完全相同,我已经多次比较了它们)文件FXMLDocumment.fxml。我是使用FXML文件的新手,并且尝试了几种修复方式,但我不知道该怎么办。感谢您的帮助,并感谢您抽出宝贵的时间阅读该文章。

0 个答案:

没有答案