定义<;图像/>;javafx中的标记

定义<;图像/>;javafx中的标记,java,javafx,javafx-8,Java,Javafx,Javafx 8,我想要的是我的GUI组件(导出为jar文件,并由另一个组件使用)可以通过使用存储在jar文件旁边的图像文件夹中的图像动态更改图像。因此,在标记中使用url不是一种选择,因为无论我如何尝试,我的jxml文件都无法在jar文件中不包含图像资源时找到它。 因此我尝试这样做: 在我的avatar.jxml文件中 但当我尝试运行该程序时,javaFX抛出异常,并且要求图像标记中的url不应为null。 有人能告诉我我做错了什么吗? 多谢各位。 P/S为了便于阅读,代码被简化了。我正在使用Java 8。正如

我想要的是我的GUI组件(导出为jar文件,并由另一个组件使用)可以通过使用存储在jar文件旁边的图像文件夹中的图像动态更改图像。因此,在标记中使用url不是一种选择,因为无论我如何尝试,我的jxml文件都无法在jar文件中不包含图像资源时找到它。
因此我尝试这样做:

在我的avatar.jxml文件中

但当我尝试运行该程序时,javaFX抛出异常,并且要求图像标记中的url不应为null。
有人能告诉我我做错了什么吗?
多谢各位。

P/S为了便于阅读,代码被简化了。我正在使用Java 8。

正如错误所说,必须使用图像数据的URL初始化
图像

如果希望能够动态更改显示的图像,则需要将
图像视图
(可初始化为“空”,即无图像)插入控制器,然后根据需要在其上设置图像

所以在FXML中,只需执行以下操作

<ImageView fx:id="myImageView" />

什么是jxml文件?
public Image myImage = new Image("location of an image stored on computer");
URL location = getClass().getResource("avatar.fxml");
ResourceBundle resources = ResourceBundle.getBundle("myResource");
FXMLLoader fxmlLoader = new FXMLLoader(location, resources);
Pane root = (Pane)fxmlLoader.load();
MyController controller = (MyController)fxmlLoader.getController();
<ImageView fx:id="myImageView" />
public class MyController {

    @FXML
    private ImageView myImageView ;

    public void initialize() { // or in an event handler, or when you externally set the image, etc
        Path imageFile = Paths.get("/path/to/image/file");
        myImageView.setImage(new Image(imageFile.toUri().toURL().toExternalForm()));

    }
}