FXML文档拒绝导入其他FXML文件

 2023-02-16    364  

问题描述

我为我的程序有一个主要的FXML文档,其中包含TabPane.对于每个标签,我希望它具有自己的控制器和FXML文件.当我尝试将外部FMXL文件包括在主FXML文档中时,我的程序拒绝运行.这是我的主要FXML文档:
这是我的java文件的副本

@Override
public void start(Stage stage) throws Exception {
    FXMLLoader fxml = new FXMLLoader();
    Parent root = fxml.load(getClass().getResource("FXMLDocument.fxml").openStream());

    Scene scene = new Scene(root);
    stage.setScene(scene);
    stage.show();
    FXMLDocumentController fdc = fxml.getController();
}

错误:

FXML文档拒绝导入其他FXML文件

Caused by: javafx.fxml.LoadException: Base location is undefined. unknown path:97

推荐答案

此错误是因为您尚未设置FXMLLoader的location属性,而是指定InputStream从中指定加载FXML的InputStream.我认为FXMLLoader必须需要知道原始FXML文件的位置,以解决随附的文件的位置.实际上,您应该仅在特殊情况下使用load(InputStream)方法:当您从资源以外的其他源加载FXML(即应用程序JAR中的文件或资源).

而是使用

FXMLLoader fxml = new FXMLLoader();
fxml.setLocation(getClass().getResource("FXMLDocument.fxml"));
Parent root = fxml.load();

或等效,

FXMLLoader fxml = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
Parent root = fxml.load();

以上所述是小编给大家介绍的FXML文档拒绝导入其他FXML文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/34079.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。